moharrum / laravel-geoip-world-cities
Laravel GeoIP World Cities provides MaxMind Free World Cities Database for laravel applications.
Requires
- php: ~5.5|~7.0
- illuminate/support: ~5|~6|~7
Requires (Dev)
- phpunit/phpunit: ~4.0||~5.0
- squizlabs/php_codesniffer: ^2.3
README
Laravel GeoIP World Cities is package that provides MaxMind Free World Cities Database support for laravel applications.
Contents
- Introduction
- Before installing
- Installation
- Table structure
- Example
- Troubleshooting
- Changelog
- Contributing
- Credits
- License
Introduction
Includes city, region, country, latitude and longitude. This database doesn't contain any IP addresses. It's simply a listing of all the cities in the world.
This package simply loads the data provided in worldcitiespop.txt.gz
file by MaxMind into a database and provides a City
model to query the table.
Before installing
If you are looking for the Laravel 4 version, take a look Branch 1.0.
Installation
Note: This package is a bit large, ~40MB, installing and seeding the data could take a while.
Add moharrum/laravel-geoip-world-cities
to composer.json
:
"moharrum/laravel-geoip-world-cities": "2.*"
for the last stable version, or
"moharrum/laravel-geoip-world-cities": "dev-master"
for the latest version.
Run composer update
to pull down laravel-geoip-world-cities.
Edit config/app.php
and add the provider
(ignore this step if you have package discovery enabled)
'providers' => [ Moharrum\LaravelGeoIPWorldCities\LaravelGeoIPWorldCitiesServiceProvider::class, ]
Optionally add the alias.
'aliases' => [ 'Cities' => Moharrum\LaravelGeoIPWorldCities\Facade::class, ]
Configure MySQL and PDO, insert the following code in config/database.php
:
'mysql' => [ 'options' => [PDO::MYSQL_ATTR_LOCAL_INFILE => true], ],
Publishing the configuration file, this is where you can change the default table name
php artisan vendor:publish
Publishing the migration and seeder files
php artisan cities:migration
php artisan cities:seeder
To make sure the data is seeded insert the following code in seeds/DatabaseSeeder.php
// Seeding the cities $this->call(CitiesTableSeeder::class); $this->command->info('Seeded the cities table ...');
You may now run:
php artisan migrate --seed
After running this command the filled cities table will be available
Table structure
Example
The package provides a City
model which can be used to query the data
\Moharrum\LaravelGeoIPWorldCities\City::whereCity('Khartoum')->first();
Troubleshooting
If you are getting a ReflectionException
when trying to seed
[ReflectionException] Class CitiesTableSeeder does not exist
run:
composer dump-autoload
and try again.
Change log
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING and CONDUCT for details.
Credits
License
MaxMind WorldCities License.
The MIT License (MIT). Please see License File for more information.