gerardojbaez/geodata

Laravel 5.2 包,提供基本地理数据,如国家、地区和城市。

v0.4.0 2017-04-14 19:48 UTC

This package is auto-updated.

Last update: 2024-09-06 19:01:13 UTC


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\CountryGerardojbaez\GeoData\Models\RegionGerardojbaez\GeoData\Models\City 模型。

查看每个模型以获取更多详细信息。

控制器

如果您想向您的前端提供国家、地区和/或城市数据,您可能希望使用 Gerardojbaez\GeoData\Controllers\CountriesControllerGerardojbaez\GeoData\Controllers\RegionsControllerGerardojbaez\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 许可证条款分发。