Laravel GeoIP World Cities is package that provides MaxMind Free World Cities Database support for laravel applications.
- Introduction
- Before installing
- Installation
- Table structure
- Example
- Troubleshooting
- Changelog
- Contributing
- Credits
- License
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.
If you are looking for the Laravel 4 version, take a look Branch 1.0.
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
id | country | city | city_ascii | region | population | latitude | longitude |
---|---|---|---|---|---|---|---|
.. | .. | .. | .. | .. | .. | .. | .. |
2685662 | sd | Khartoum | khartoum | 29 | 1974780 | 15.588056 | 32.534167 |
.. | .. | .. | .. | .. | .. | .. | .. |
The package provides a City
model which can be used to query the data
\Moharrum\LaravelGeoIPWorldCities\City::whereCity('Khartoum')->first();
If you are getting a ReflectionException
when trying to seed
[ReflectionException]
Class CitiesTableSeeder does not exist
run:
composer dump-autoload
and try again.
Please see CHANGELOG for more information on what has changed recently.
Please see CONTRIBUTING and CONDUCT for details.
MaxMind WorldCities License.
The MIT License (MIT). Please see License File for more information.