moharrum / laravel-geoip-world-cities by moharrum

Laravel GeoIP World Cities provides MaxMind Free World Cities Database for laravel applications.
7,993
2
1
Package Data
Maintainer Username: moharrum
Maintainer Contact: khalid.moharram@gmail.com (Khalid Moharrum)
Package Create Date: 2018-08-24
Package Last Update: 2020-04-13
Language: PHP
License: MIT
Last Refreshed: 2024-03-26 15:03:59
Package Statistics
Total Downloads: 7,993
Monthly Downloads: 1
Daily Downloads: 0
Total Stars: 2
Total Watchers: 1
Total Forks: 5
Total Open Issues: 0

laravel-geoip-world-cities (Laravel 5)

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 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

    '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

| 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

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