chrisabey84 / laravel-cached-options-list
一个简单的包,允许您缓存关系模型上的所有行,以便在表单的select数组中使用
0.1
2022-07-04 10:47 UTC
Requires
- php: ^8.0
- illuminate/contracts: ^9.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.8
- nunomaduro/collision: ^6.0
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^7.0
- pestphp/pest: ^1.21
- pestphp/pest-plugin-laravel: ^1.1
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^9.5
- spatie/laravel-ray: ^1.26
This package is auto-updated.
Last update: 2024-09-09 08:35:24 UTC
README
一个简单的包,允许您缓存关系模型上的所有行,以便在表单的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)。有关更多信息,请参阅许可证文件。