altwaireb/laravel-world

Laravel World, 国家、州、城市数据库迁移与填充器

v1.0.0 2024-06-24 03:47 UTC

This package is auto-updated.

Last update: 2024-09-19 23:30:14 UTC


README

此包将允许您为Laravel添加所有国家、州、城市数据数据库迁移与填充器

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

数字

属性

常用属性

  • 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: 国家的emoji国旗,例如🇺🇸。
  • emojiU: 国家的emoji Unicode国旗,例如U+1F1FA U+1F1F8。
  • flag: 国家是否有国旗(布尔值)。
  • is_active: 国家是否激活(布尔值)。

安装

您可以通过composer安装此包。

composer require altwaireb/laravel-world

用法

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

php artisan world:install

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

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

或者,您可以通过运行此命令来填充国家、州、城市的数据库数据。

php artisan world:seeder

您可以通过运行此命令刷新并重新填充国家、州、城市的数据库数据。

php artisan world:seeder --refresh

您可以在处理填充数据之前的配置文件config/world.php中通过国家代码ISO2或ISO3或两者来指定国家的激活状态。

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

作用域

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

use App\Models\Country;

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

鸣谢

许可证

MIT许可证(MIT)。请参阅许可证文件以获取更多信息。