yarob/laravel-model-settings

Laravel 5.0+ 包,用于以 JSON 格式管理 Eloquent 设置

1.0.1 2017-02-26 14:27 UTC

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_numberaddress 设置键添加到 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-settingsYarob Al-Taay 编写,并按照 MIT 许可证 发布。

版权 (c) 2017 Yarob Al-Taay