pixxet/laravel-geoip-world-cities

Laravel GeoIP World Cities provides MaxMind Free World Cities Database for laravel applications.

2.3.1 2017-03-11 16:50 UTC

This package is auto-updated.

Last update: 2024-04-08 07:10:53 UTC


README

Latest Version on Packagist Latest Unstable Version Software License Total Downloads

Laravel GeoIP World Cities is package that provides MaxMind Free World Cities Database support for laravel applications.

Contents

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 pixxet/laravel-geoip-world-cities to composer.json:

"pixxet/laravel-geoip-world-cities": "2.*"

for the last stable version, or

"pixxet/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

    'providers' => [
        Pixxet\LaravelGeoIPWorldCities\LaravelGeoIPWorldCitiesServiceProvider::class,
    ]

Optionally add the alias.

    'aliases' => [
        'Cities' => Pixxet\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

id country city city_ascii region population latitude longitude
.. .. .. .. .. .. .. ..
2685662 sd Khartoum khartoum 29 1974780 15.588056 32.534167
.. .. .. .. .. .. .. ..

Example

The package provides a City model which can be used to query the data

    \Pixxet\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.