gerardojbaez / geodata
Laravel 5.2 包,提供基本地理数据,如国家、地区和城市。
Requires
- php: >=5.5.9
- illuminate/support: ~5.0
README
GeoData 是一个 Laravel 包,提供基本地理数据,如国家、地区和城市。
内容
安装
Composer
通过 Composer (文件 composer.json
) 拉取此包
{ "require": { "php": ">=5.5.9", "laravel/framework": "5.2.*", "gerardojbaez/geodata": "0.*" } }
在您的终端中运行以下命令。
composer update
服务提供者
将包添加到您的应用程序服务提供者在 config/app.php 文件中。
<?php 'providers' => [ [...] /** * Third Party Service Providers... */ Gerardojbaez\GeoData\GeoDataServiceProvider::class, ]
迁移和种子
使用以下命令发布包迁移和种子
php artisan vendor:publish
然后运行迁移。
php artisan migrate
如果您想 安装所有国家,请运行
php artisan db:seed --class AllCountriesSeeder
如果您想安装特定国家,请运行
php artisan db:seed --class Gerardojbaez\\GeoData\\Seeders\\UnitedStatesSeeder
php artisan db:seed --class Gerardojbaez\\GeoData\\Seeders\\PuertoRicoSeeder
[...]
查看下面的 可用国家。
可用国家
特质和契约
当您需要定义与国家、地区和/或城市的关联时,可以使用 GeoData 特质。
请看以下示例
<?php namespace App\Models; // [...] use Gerardojbaez\GeoData\Contracts\HasCountryContract; use Gerardojbaez\GeoData\Contracts\HasRegionContract; use Gerardojbaez\GeoData\Contracts\HasCityContract; use Gerardojbaez\GeoData\Traits\HasCountry; use Gerardojbaez\GeoData\Traits\HasRegion; use Gerardojbaez\GeoData\Traits\HasCity; class User extends Model implements HasCountryContract, HasRegionContract, HasCityContract { use HasCountry, HasRegion, HasCity; /** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'country_code', 'region_id', 'city_id', ... ];
使用
安装国家
除了通过命令行使用种子安装国家外,您还可以通过 CountryInstaller
类安装国家。这将帮助您创建一个“网络界面”,使用户能够根据需要安装国家。安装程序将检查国家是否已安装,如果是,将抛出 Gerardojbaez\Geodata\Exceptions\CountryAlreadyInstalledException
。
安装包括
- 国家
- 国家地区
- 国家城市
这很简单
<?php use Gerardojbaez\Geodata\CountryInstaller; // Install United States. $installer = new CountryInstaller('United States'); $installer->install(); // Install Puerto Rico. $installer = new CountryInstaller('Puerto Rico'); $installer->install(); // Install Spain $installer = new CountryInstaller('Spain'); $installer->install();
模型
此包包含 Gerardojbaez\GeoData\Models\Country
、Gerardojbaez\GeoData\Models\Region
和 Gerardojbaez\GeoData\Models\City
模型。
查看每个模型以获取更多详细信息。
控制器
如果您想向您的前端提供国家、地区和/或城市数据,您可能希望使用 Gerardojbaez\GeoData\Controllers\CountriesController
、Gerardojbaez\GeoData\Controllers\RegionsController
和 Gerardojbaez\GeoData\Controllers\CitiesController
控制器。
控制器返回包含(如果有)请求数据的 JSON 响应。
路由
这是一个示例。您可以根据需要对这些路由进行结构化。
<?php // Show countries list. Route::get('api/geo/countries', [ 'uses' => '\Gerardojbaez\GeoData\Controllers\CountriesController@countries', 'as' => 'geodata.countries' ]); // Show regions list. Route::get('api/geo/{country}/regions', [ 'uses' => '\Gerardojbaez\GeoData\Controllers\RegionsController@regions', 'as' => 'geodata.regions' ]); // Show cities list. Route::get('api/geo/{country}/{region}/cities', [ 'uses' => '\Gerardojbaez\GeoData\Controllers\CitiesController@cities', 'as' => 'geodata.cities' ]);
许可证
此包是免费软件,根据 MIT 许可证条款分发。