cloudcake/laravel-settings

将通用数据关联到任何其他模型,而不污染您的应用程序模型逻辑。

v1.2 2020-01-12 22:32 UTC

This package is auto-updated.

Last update: 2024-09-13 08:38:52 UTC


README

设置 是一个包,用于使用多态关系将设置或 JSON 形式的属性关联到您的任何模型。

用法

发布迁移

php artisan vendor:publish --provider="Settings\Providers\SettingsServiceProvider" \
                           --tag="migrations"

设置模型

\Settings\Traits\HasSettings 特性添加到任何应具有设置的模型。

use Settings\Traits\HasSettings;

class User extends Model
{
    use HasSettings;
}

创建设置

全局设置

use Settings\Models\Setting;

Setting::make('config', [
  'rateLimit' => true,
  'ipLocks'   => [
    '127.0.0.1',
    '10.0.0.1'
  ]
]);

模型特定设置

use Settings\Models\Setting;

Setting::make('preferences', [
  'notifications'    => true,
  'backgroundColour' => '#ffffff'
], \App\User::class);

附加设置

在附加设置时,未提供的任何字段将接收默认值。

\App\User::find(1)->attachSetting('preferences', [
  'notifications' => false,
]);

上述设置将 notifications 设置为 true,而 backgroundColour 将从原始设置中继承。如果全局设置更改,用户的设置将返回更改后的设置。

获取设置

获取所有字段

\App\User::first()->setting('preferences');

获取特定字段

\App\User::first()->setting('preferences')->get('notifications');

修改设置

\App\User::first()->setting('preferences')->set('notifications', true);