yarob / laravel-model-settings
Laravel 5.0+ 包,用于以 JSON 格式管理 Eloquent 设置
This package is not auto-updated.
Last update: 2024-09-28 20:35:43 UTC
README
将设置功能添加到 Laravel 5 中的 Eloquent 模型。
背景
本功能是为了简化在 Laravel 项目中为任何 Eloquent 模型添加“设置”功能而开发的。
设置将以 json 格式/对象存储!是 json 最好的方式吗?这取决于您!优点:非常灵活,您可以在不更改代码的情况下添加/删除设置(除 app/config/model-settings.php 外,见下文)。缺点:在按模型查询/搜索设置中的特定 key => value 时较为昂贵。
settings 将被转换为 Laravel Collection,以实现最大功能和用途。
安装
通过 Composer 安装此包
$ composer require yarob/laravel-model-settings
然后,更新 config/app.php 文件,添加服务提供者的条目。
'providers' => [ // ... Yarob\LaravelModelSettings\ServiceProvider::class, ];
最后,通过终端发布默认配置文件
php artisan vendor:publish --provider="Yarob\LaravelModelSettings\ServiceProvider"
更新您的 Eloquent 模型
您的模型应该使用 hasSettings 特性。您还必须将 settings 添加到您的 fillable 数组中,如下例所示
use Yarob\LaravelModelSettings\HasSettings; class User extends Model { use hasSettings; /** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'name', 'email', 'settings' ]; }
迁移
您的模型必须在数据库中具有名为 settings 的列以存储设置值。
您可以通过在目标模型上手动执行迁移来添加此列,例如 $table->json('settings')->nullable();。该列应足够大,可以容纳所有设置在经过 JSON 编码后。
使用方法
更好的示例
$user = App\User::first(); $user->settings()->save(array( 'address' => 'London', 'phone_number' => '0123456789' )); print_r($user->settings);
配置
配置被设计得尽可能灵活。您可以为每个模型添加允许的设置键。
全局配置可以在 app/config/model-settings.php 文件中设置。默认情况下,已将 phone_number 和 address 设置键添加到 User 模型。但您可以随意更改。
如果没有设置配置,则使用包的默认值从 vendor/yarob/laravel-model-settings/resources/config/model-settings.php。以下是一个配置示例
return [ 'User' => [ 'phone_number', 'address', ], ];
请注意,在 model-settings.php 中的模型名称是区分大小写的!所以如果您有一个 foo 模型,那么
return [ 'foo' => [ 'key1', 'key2', ... ], ... ];
版权和许可证
laravel-model-settings 由 Yarob Al-Taay 编写,并按照 MIT 许可证 发布。
版权 (c) 2017 Yarob Al-Taay