chrisabey84/laravel-cached-options-list

一个简单的包,允许您缓存关系模型上的所有行,以便在表单的select数组中使用

0.1 2022-07-04 10:47 UTC

README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

一个简单的包,允许您缓存关系模型上的所有行,以便在表单的select数组中使用。

安装

您可以通过composer安装此包

composer require chrisabey84/laravel-cached-options-list

您可以使用以下命令发布配置文件:

php artisan vendor:publish --provider="Chrisabey84\LaravelCachedOptionsList\LaravelCachedOptionsListServiceProvider

这是发布配置文件的内容

return [
    'key' => 'id', //The index/key column for the select options array
    'value' => 'name', //The value column for the select options array
];

使用方法

HasCachedOptionsList特质添加到您的任何模型中,将提供以下功能

$rows = \App\Models\MyModel::asSelectArray();

将检索所有行作为关联数组,然后可以在您的blade模板中使用该数组来填充select框中的选项

<select name="mySelectBox">
@foreach($rows as $key => $value)
	<option value="{{ $key }}">{{ $value }}</option>
@endforeach
</select>

自定义行为

默认情况下,asSelectArray()将从数据库表中检索所有行,但是您可以通过覆盖以下方法来自定义此行为,该方法必须返回一个Builder实例

protected static function buildQuery(): Builder
{
	return static::query();
}

清除缓存

创建、更新或删除您的模型时,缓存将自动清除。

要手动清除缓存,您可以:

\App\Models\MyModel::clearOptionsCache();

或使用带有模型名称作为参数的方便的 artisan 命令

php artisan cached-options:clear '\App\Models\MyModel'

测试

composer test

鸣谢

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件