michielvaneerd/laravel-country-info

添加国家、语言和时区数据以及ORM模型。

v0.2.0 2023-10-07 06:37 UTC

This package is auto-updated.

Last update: 2024-09-07 08:28:54 UTC


README

为您的Laravel项目提供国家、地区/语言和时区信息。

在运行迁移和数据填充器后,您将拥有包含世界各国、地区和时区的3张表。

每个表对应一个您可以在代码中使用的模型。下面是模型及其属性。

注意:地区是在特定国家中使用的语言,例如英国英语或美国英语。语言只是英语或法语。

数据

国家

属性

  • 代码 - 2个字母代码,如 FRNL
  • 标题 - 英文名称,如 France

地区

属性

  • 国家 - 该地区所属的国家(仅限地区,不适用于语言)
  • 代码 - 格式为 nl-NLen-GB
  • 标题 - 英文名称,如 Afrikaans / Namibia

时区

  • 国家 - 该时区所属的国家
  • 名称 - 英文名称,如 Africa/Abidjan

安装包并将所有数据填充到数据库中

首先安装包

composer require michielvaneerd/laravel-country-info

然后运行迁移 - 这将创建3个表:mvr_countries, mve_locales和mve_timezones

php artisan migrate

然后运行数据填充器。

始终首先运行国家数据填充器,因为地区和时区数据填充器依赖于它。

php artisan db:seed --class="Michielvaneerd\\CountryInfo\\Database\\Seeders\\CountrySeeder"

如果您不需要地区或时区,当然可以跳过它们。

php artisan db:seed --class="Michielvaneerd\\CountryInfo\\Database\\Seeders\\LocaleSeeder"

php artisan db:seed --class="Michielvaneerd\\CountryInfo\\Database\\Seeders\\TimezoneSeeder"

如果您还想添加语言(无国家附件的地区)。这些是像 ennl 这样的语言,没有与之相关的国家。当然,它们也没有国家关系。

php artisan db:seed --class="Michielvaneerd\\CountryInfo\\Database\\Seeders\\LanguageSeeder"

启用或禁用国家、地区和时区

每个表都有一个 enabled 列,可以设置为 YN。这样,您可以为应显示或不应显示在应用程序中的项目添加标志。

此标志可以用Artisan命令设置。

Artisan命令

国家

列出所有国家

mve:countries-list

列出启用或禁用的国家

mve:countries-list --enabled=Y

mve:countries-list --enabled=N

按代码或标题排序国家

mve:countries-list --order=code

mve:countries-list --order=title

启用或禁用国家

mve:countries-edit --enable=Y --codes=FR,NL

mve:countries-edit --enable=N --codes=FR,NL

地区

显示荷兰和法国的启用地区并按代码排序

mve:locales-list --enabled=Y --order=code --countries=NL,FR

启用一些语言

mve:locales-edit --enable=Y --codes=en-GB,nl-NL

为特定国家启用所有语言

mve:locales-edit --enable=Y --countries=GB,NL

时区

显示荷兰和法国的启用时区并按名称排序

mve:timezones-list --enabled=Y --order=name --countries=NL,FR

启用一些时区

mve:timezones-edit --enable=Y --names="Europe/Amsterdam,Europe/Paris"

为特定国家启用所有语言

mve:timezones-edit --enable=Y --countries=GB,NL

使用该包

use Michielvaneerd\CountryInfo\Models\Country;
use Michielvaneerd\CountryInfo\Models\Locale;
use Michielvaneerd\CountryInfo\Models\Timezone;

// Get one specific country
$country = Country::where('code', 'GB')->first();
echo $country->code; // GB

// Get all enabled countries
$countries = Country::where('enabled', 'Y')->get();

// Get all locales for a specific country
$locales = $country->locales;

// Get one specific locale
$locale = Locale::where('code', 'en-GB')->first();
echo $locale->code; // en-GB
echo $locale->title; // English / United Kingdom
echo $locale->country; // Country model

// Get all timezones for a specific country
$timezones = $country->timezones;

// Get one specific timezone
$timezone = Timezone::where('name', 'Europe/Amsterdam')->first();
echo $timezone->name; // Europe/Amsterdam
echo $timezone->country; // Country model