michielvaneerd / laravel-country-info
添加国家、语言和时区数据以及ORM模型。
Requires
- php: >=8.1
README
为您的Laravel项目提供国家、地区/语言和时区信息。
在运行迁移和数据填充器后,您将拥有包含世界各国、地区和时区的3张表。
每个表对应一个您可以在代码中使用的模型。下面是模型及其属性。
注意:地区是在特定国家中使用的语言,例如英国英语或美国英语。语言只是英语或法语。
数据
国家
属性
- 代码 - 2个字母代码,如
FR或NL - 标题 - 英文名称,如
France
地区
属性
- 国家 - 该地区所属的国家(仅限地区,不适用于语言)
- 代码 - 格式为
nl-NL或en-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"
如果您还想添加语言(无国家附件的地区)。这些是像 en 或 nl 这样的语言,没有与之相关的国家。当然,它们也没有国家关系。
php artisan db:seed --class="Michielvaneerd\\CountryInfo\\Database\\Seeders\\LanguageSeeder"
启用或禁用国家、地区和时区
每个表都有一个 enabled 列,可以设置为 Y 或 N。这样,您可以为应显示或不应显示在应用程序中的项目添加标志。
此标志可以用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