Squire:静态 Eloquent 模型库
发布时间 作者: Dan Harrin
Squire 是一个包含预构建静态 Eloquent 模型的库,用于常见的固定数据。它为您的 Laravel 应用提供了有关国家、货币、机场等的信息,无需使用第三方 API。
设置很简单 - 只需在您的应用中安装您需要的模型包,就可以开始使用了。Squire 预装了可查询的 Eloquent 模型、验证规则和完整的本地化支持。
Squire 基于 Caleb Porzio 的 Sushi 包中展示的原则构建:所有模型都由它们自己的 SQLite 数据库提供并进行缓存。
构建国家选择输入
我们将使用 Squire 中的数据创建一个国家选择输入。让我们用英语安装 Squire\Models\Country
模型
composer require squirephp/countries-en
提示:所有 Squire 模型都是可翻译的。Squire 可以根据用户的语言环境自动提供正确的数据。为了尝试它,还可以安装 squirephp/countries-fr
包,并注意法语用户将以正确的语言显示。
为了保持简单,使用 Blade 查询 Country 模型并渲染我们的选择选项
<select name="country"> @foreach (Squire\Models\Country::orderBy('name')->get() as $country) <option value="{{ $country->id }}">{{ $country->name }} {{ $country->flag }}</option> @endforeach</select>
验证输入以确保在控制器中选择了有效的国家
use Squire\Rules\Country; $request->validate([ 'country' => ['required', 'string', new Country],]);
您可以使用 Squire 和非 Squire 模型之间的常规 Eloquent 关系。让我们为 App\Models\User
模型上的 country_id
列设置一个 country
关系
use Squire\Models\Country; public function country(){ return $this->belongsTo(Country::class);}
在您的控制器中将选定的国家保存到 $user
$user->country()->associate($request->country); $user->save();
总结
Squire 能够替换 Laravel 应用中的许多第三方 API,从而降低成本并提高性能。
生态系统在不断扩展,社区提交并发布了新的模型和翻译。如果您发现缺少任何内容,请随时在存储库中打开一个 功能讨论 或 拉取请求,或者 发布您自己的 Squire 包。
如果您有任何问题,请随时 在 Twitter 上关注我 @danjharrin,我会尽力回复。如果您喜欢 Squire,在 GitHub 上赞助我 确保我可以花时间维护和改进这个包。