ujahmycine/geodata

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

dev-master 2019-10-22 10:17 UTC

This package is auto-updated.

Last update: 2024-09-22 21:07:00 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 类安装国家。这将帮助您创建一个“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\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 许可证条款分发。