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
贡献
如果您有要贡献给库的固定数据,请提交一个拉取请求!
作为参考,查看现有的模型。