GeoData
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, ]
迁移和 Seeders
使用以下内容发布程序包迁移和 Seeders 程序
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 [...]
检查下面的可用国家/地区:
可用国家
Countries |
---|
Afghanistan |
Albania |
Algeria |
Andorra |
Angola |
Antigua and Barbuda |
Argentina |
Aruba |
Australia |
Austria |
Bahamas |
Barbados |
Belgium |
Belize |
Bermuda |
Bolivia |
Brazil |
Canada |
Chile |
China |
Colombia |
Costa Rica |
Croatia |
Cuba |
Czech Republic |
Denmark |
Dominican Republic |
Ecuador |
El Salvador |
Equatorial Guinea |
Estonia |
Finland |
France |
Germany |
Greece |
Greenland |
Guatemala |
Guyana |
Haiti |
Honduras |
Hong Kong |
India |
Indonesia |
Ireland |
Israel |
Italy |
Ivory Coast |
Jamaica |
Japan |
Latvia |
Lebanon |
Luxembourg |
Malaysia |
Mexico |
Morocco |
Netherlands |
Nicaragua |
Nigeria |
Norway |
Pakistan |
Panama |
Papua New Guinea |
Paraguay |
Peru |
Philippines |
Poland |
Portugal |
Puerto Rico |
Romania |
Russia |
Saint Lucia |
San Marino |
Singapore |
South Africa |
Spain |
Sri Lanka |
Sweden |
Switzerland |
Thailand |
Turkey |
United Kingdom |
United States |
Uruguay |
Venezuela |
Traits 和 Contracts
当您需要定义与国家,地区和/或城市的关系时,您可以使用 GeoData traits。
请参阅以下示例:
<?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', ... ];
用法
安装国家/地区
除了使用 seeders 通过命令行安装国家/地区外,您还可以通过 CountryInstaller 类安装国家/地区。这将帮助您创建一个“Web 界面”,使您的客户或用户能够根据需要安装国家/地区。安装程序将检查该国家是否已经安装,在这种情况下将抛出 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 controllers。
控制器返回包含(如果有)所请求数据的 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 许可条款分发的免费软件。