bardolf69/laravel11-countries-states-cities

Laravel 国家、州、城市数据库迁移和种子器

V1.0.1 2024-07-05 02:54 UTC

This package is auto-updated.

Last update: 2024-09-05 03:22:54 UTC


README

Laravel 国家、州、城市数据

数字

属性

常见属性

  • name: 国家通用名称(英文)。
  • iso2: ISO-3166-2 代码。
  • iso2: ISO-3166-3 代码。
  • numeric_code: 国家数字代码。
  • phonecode: 国家电话代码。
  • capital: 该国的首都。
  • currency: ISO-4177 货币代码,例如 USD, CNY。
  • currency_name: 货币名称。
  • currency_symbol: 货币符号,例如 $, ¥。
  • tld: 国家顶级域名,例如 .uk。
  • native: 国家的本地名称。
  • region: 国家的地区。
  • subregion: 国家的子地区。
  • timezones: 国家的时区。
    • zoneName: 时区名称,例如 America/New_York。
    • gmtOffset: GMT 偏移量,例如 -18000。
    • gmtOffsetName: GMT 偏移量名称,例如 UTC-05:00。
    • abbreviation: 缩写,例如 EST。
    • tzName: 时区名称,例如 Eastern Standard Time (North America)。
  • translations: 国家名称翻译,例如。
    • "ar": "الولايات المتحدة الأمريكية"
    • "kr": "미국"
    • "fr": "États-Unis"
  • latitude: 国家的纬度。
  • longitude: 国家的经度。
  • emoji: 国家的表情符号国旗,例如 🇺🇸。
  • emojiU: 国家的表情符号 Unicode 国旗,例如 U+1F1FA U+1F1F8。
  • flag: 国家是否有国旗(布尔值)。
  • is_active: 国家是否激活(布尔值)。

安装

您可以通过 composer 安装此包

composer require bardolf69/laravel-countries-states-cities

使用

现在运行以下命令进行安装。

php artisan countries-states-cities:install

database\seeders\DatabaseSeeder.php 中添加 seeder 文件,并添加以下行以使用 php artisan db:seed 命令。

public function run(): void
    {
    
        $this->call(CountriesStatesCitiesTableSeeder::class);
        ...
    }

或者,您可以通过运行此命令来种子国家、州、城市数据。

php artisan countries-states-cities:seeder

并且您可以通过运行此命令来刷新重新种子国家、州、城市数据。

php artisan countries-states-cities:seeder --refresh

您可以通过配置文件中的国家代码 ISO2 或 ISO3 来指定国家的激活状态。 config/countries-states-cities.php

return [
    'countries' => [
        'activation' => [
            'default' => true,
            'only' => [
                'iso2' => ['SA','GB','DE'],
                'iso3' => ['USA','BRA','EGY'],
            ],
            'except' => [
                'iso2' => ['GA'],
                'iso3' => ['HTI'],
            ],
        ],
        'chunk_length' => 50,
    ],

    'states' => [
        'activation' => [
            'default' => true,
        ],
        'chunk_length' => 200,
    ],

    'cities' => [
        'activation' => [
            'default' => true,
        ],
        'chunk_length' => 200,
    ],
];

这意味着仅激活这两个国家和它们相关的州和城市。

  • 注意:如果激活仅 iso2iso3 都为空,则列 is_active 采用配置文件中的 default 值。
  • 注意:如果国家是激活的,所有州和城市都是激活的。
  • 注意:如果激活除了 iso2iso3 之外,列 is_active 采用 FALSE 值。
  • 注意:如果国家未激活,所有州和城市都没有激活。

使用

您可以通过 iso2 和 iso3 或两者来获取国家。

如果您想通过 iso2 获取国家,可以使用 yes 静态函数 getByIso2

use App\Models\Country;

$sa = Country::getByIso2('SA');
$sa->name; // Saudi Arabia
$sa->iso2; // SA
$sa->iso3; // SAU
$sa->currency_symbol; // ﷼
$sa->native; // المملكة العربية السعودية

如果您想通过 iso3 获取国家,可以使用。

use App\Models\Country;

$bra = Country::getByIso3('BRA');
$bra->name; // Brazil
$bra->iso2; // BR
$bra->iso3; // BRA
$bra->currency_symbol; // R$
$bra->native; // Brasil

如果您想通过 iso2 或 iso3 获取国家,也可以使用。

use App\Models\Country;

$bra = Country::getByCode('PT');
$bra->name; // Portugal
$bra->iso2; // PT
$bra->iso3; // PRT
$bra->currency_symbol; // €
$bra->native; // Portugal

作用域

您可以使用作用域来通过使用过滤数据是否激活。

use App\Models\Country;

$countries = Country::active()->pluck('name','id');

致谢

许可

MIT 许可证(MIT)。有关更多信息,请参阅许可文件