danharrin/squire

此包已废弃,不再维护。作者建议使用 https://github.com/squirephp/squire#upgrading-from-1x 包。

常见数据固定静态 Eloquent 模型的库。

资助包维护!
danharrin

v1.3.0 2021-01-11 00:30 UTC

This package is auto-updated.

Last update: 2021-05-07 11:22:52 UTC


README

注意:此 v1.x 包已被弃用,推荐使用 v2.x 包,并且不再维护。 了解更多。

CI status

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

贡献

如果您有要贡献给库的固定数据,请提交一个拉取请求!

作为参考,查看现有的模型。