README

Brand new world country/state/city database according to your locale settings.

As I was developing a cascaded dropdown of countries, state and cities selection, I found a package named khsing/laravel-world, but this package seems not maintain for a long time, so I've forked it and changed a little to fix some issues. Because of its data structure, it is a little diffcult to retrieve locale data with eagerly loading. So I develop this package which implemented spatie/laravel-translatable so it can get data by your locale with no pain.

Requirements

This package requires Laravel 5.5 or higher, PHP 7.0 or higher and a database that supports json fields such as MySQL 5.7 or higher.

if you are using Mariadb, pls make sure the version > 10.2.8 which supports json field, and use ybr-nx/laravel-mariadb as your database driver

Installation

You can install the package via composer:

composer require coldcoder/laravel-worldcities

The package will automatically register itself for laravel >= 5.5.

You can register the service provider in config/app.php manually if using laravel < 5.5

useColdcoder\WorldCity\Models\Country;
// get a country by code$usa = Country::findFromCode('us');
$usa->states; // return states$usa->cities; // return cities$usa->has_state; // return true;// as it just implements locales of en and zh, you can translate other locales by yourself// or request a PR// translating a continent/country/state/city$usa->setTranslation('name', 'fr', 'country name in French');
$usa->save();
// you can use HasCity trait within your own model to setup relationshipuseColdcoder\WorldCity\Traits\HasCity;
classYourModelextendsModel
{
useHasCity;
}
// after that you can get your model's related city$model->city;