danharrin / squire
v1.3.0
2021-01-11 00:30 UTC
Requires
- php: ^7.2|^8.0
- calebporzio/sushi: ^2.1
- illuminate/database: ^6.0 || ^7.0 || ^8.0
Requires (Dev)
- orchestra/testbench: ^6.2
- phpunit/phpunit: ^9.4
This package is auto-updated.
Last update: 2021-05-07 11:22:52 UTC
README
注意:此 v1.x 包已被弃用,推荐使用 v2.x 包,并且不再维护。 了解更多。
Squire 是一个用于常见固定数据的静态 Eloquent 模型库,例如国家、货币和机场。它基于 Caleb Porzio 的 Sushi 包 构建。
Squire 的常见用例包括
- 填充下拉选项,例如地址表单中的国家选择器。
- 将其他数据附加到您的应用程序中的其他模型上,例如将机场信息附加到
Flight
模型。请参阅模型关系部分。
内容
安装 Squire
您可以使用 Composer 将 Squire 安装到您的应用程序中。
composer require danharrin/squire
无需额外设置。
使用模型
您可以像与其他 Eloquent 模型一样与 Squire 模型交互,除了它只处理只读操作。
use Squire\Models\Country; Country::all(); // Get information about all countries. Country::find('us'); // Get information about the United States. Country::where('name', 'like', 'a%')->get(); // Get information about all countries beginning with the letter "a".
可用模型
Squire\Models\Airline
列名 | 描述 | 示例 |
---|---|---|
alias |
航空公司的备用名称。 | EasyJet Airline |
call_sign |
航空公司的呼号。 | EASY |
code_iata |
IATA 代码 的航空公司。 | u2 |
code_icao |
ICAO 代码 的航空公司。 | ezy |
country_id |
ISO 3166-1 alpha-2 国家代码 的航空公司。 | gb |
name |
航空公司的名称。 | easyJet |
关系名称 | 模型 |
---|---|
country |
Squire\Models\Country |
continent |
Squire\Models\Continent |
Squire\Models\Airport
列名 | 描述 | 示例 |
---|---|---|
code_gps |
机场的 GPS 代码。 | ayse |
code_iata |
IATA 代码 的机场。 | nis |
code_icao |
机场的本地代码。 | 机场编码 |
城市 |
机场所在城市。 | 锡伯里岛 |
name |
机场名称。 | 锡伯里机场 |
region_id |
ISO 3166-2区域代码的机场。 | pg-nik |
类型 |
机场类型。 | 小型机场 |
关系名称 | 模型 |
---|---|
country |
Squire\Models\Country |
地区 |
Squire\Models\Region |
Squire\Models\Continent
列名 | 描述 | 示例 |
---|---|---|
代码 |
两位字母的大陆代码。 | na |
name |
大陆名称。 | 北美洲 |
关系名称 | 模型 |
---|---|
国家 |
Squire\Models\Country |
地区 |
Squire\Models\Region |
Squire\Models\Counties\GbCounty
列名 | 描述 | 示例 |
---|---|---|
代码 |
ISO 3166-2县代码. | gb-ess |
name |
县名称。 | 埃塞克斯 |
region_id |
ISO 3166-2区域代码的县。 | gb-eng |
关系名称 | 模型 |
---|---|
地区 |
Squire\Models\Region |
Squire\Models\Country
列名 | 描述 | 示例 |
---|---|---|
国家区号 |
E.164国家区号。 | 1 |
首都 |
国家的首都。 | 华盛顿 |
code_2 |
ISO 3166-1 alpha-2国家代码. | us |
code_3 |
ISO 3166-1 alpha-3国家代码. | usa |
continent_id |
国家的两位字母的大陆代码。 | na |
currency_id |
ISO 4217国家的字母货币代码。 | usd |
flag |
国家的Unicode国旗。 | 🇺🇸 |
name |
国家名称。 | 美国 |
关系名称 | 模型 |
---|---|
航空公司 |
Squire\Models\Airline |
机场 |
Squire\Models\Airport |
continent |
Squire\Models\Continent |
货币 |
Squire\Models\Currency |
地区 |
Squire\Models\Region |
Squire\Models\Currency
列名 | 描述 | 示例 |
---|---|---|
code_alphabetic |
ISO 4217字母货币代码。 | usd |
code_numeric |
ISO 4217数字货币代码。 | 840 |
decimal_digits |
在格式化此货币时使用的十进制位数。 | 2 |
name |
货币名称。 | 美元 |
name_plural |
复数货币名称。 | 美元 |
rounding |
此货币的格式化精度。 | 0 |
symbol |
国际货币符号。 | $ |
symbol_native |
本地货币符号。 | $ |
关系名称 | 模型 |
---|---|
国家 |
Squire\Models\Country |
Squire\Models\Region
列名 | 描述 | 示例 |
---|---|---|
代码 |
ISO 3166-2区域代码. | us-ny |
country_id |
ISO 3166-1 alpha-2国家代码. | us |
name |
地区名称。 | 纽约 |
关系名称 | 模型 |
---|---|
机场 |
Squire\Models\Airport |
continent |
Squire\Models\Continent |
country |
Squire\Models\Country |
gbCounties |
Squire\Models\County\GbCounty |
模型关系
在您的应用程序中实现模型与Squire模型之间的Eloquent关系非常简单。您可以选择几种方法。
使用继承
最简单的选项是在您的应用程序中创建一个新的模型,并让它扩展Squire模型。您的新应用程序模型现在将像原始的Squire模型一样运行,除了您可以注册新方法和根据您的喜好进行自定义。
<?php namespace App\Models; use Squire\Models\Country as SquireCountry; class Country extends SquireCountry { public function users() { return $this->hasMany(User::class); } }
有关如何使用此方法提供更多自定义选项的更多信息,请参阅模型自定义部分。
使用resolveRelationUsing()
另一种选择是resolveRelationUsing()
方法。这允许您在应用程序的任何位置动态地为Squire模型注册关系,例如,在服务提供程序中。
use App\Models\User; use Squire\Models\Country; Country::resolveRelationUsing('users', function (Country $country) { return $country->hasMany(User::class); });
列自定义
Squire 允许您自定义任何提供模型上的列名。
在您的应用程序中创建一个新的模型,并让它扩展您想要自定义的 Squire 模型
<?php namespace App\Models; use Squire\Models\Country as SquireCountry; class Country extends SquireCountry { protected $map = [ 'dial_code' => 'calling_code', ]; }
在这个例子中,扩展了 Squire\Models\Country
模型的 App\Models\Country
,将 calling_code
列重新映射为 dial_code
use App\Models\Country; Country::find('us')->dial_code; // 1
贡献
如果您有要贡献给库的固定数据,请提交一个拉取请求!
作为参考,查看现有的模型。