cklmercer / laravel-model-settings
该包已被废弃,不再维护。未建议替代包。
为您的Laravel模型添加简单灵活的设置。
8.1.0
2021-04-08 16:27 UTC
Requires
- php: ^7.2.5 || ^8.0
- illuminate/database: ^6.0 || ^7.0 || ^8.0
- illuminate/support: ^6.0 || ^7.0 || ^8.0
README
为您的Laravel模型提供简单灵活的设置。
注意:我将在不久的将来更新此插件,以更好地匹配Laravel 5.3中引入的新cache()
辅助方法的API。
安装
1.) 通过composer安装
composer require cklmercer/laravel-model-settings
2.) 在模型迁移中添加JSON设置字段。
create_users_table.php
Schema::create('users', function (Blueprint $table) { $table->increments('id'); $table->string('name'); $table->string('email')->unique(); $table->string('password'); $table->json('settings'); $table->rememberToken(); $table->timestamps(); });
3.) 在模型中使用特质 Cklmercer\ModelSettings\HasSettings
。
User.php
use Cklmercer\ModelSettings\HasSettings; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable { use HasSettings; // truncated for brevity.. }
用法
1.) 获取所有模型设置。
$user = App\User::first(); $user->settings()->all(); // Returns an array of the user's settings. $user->settings()->get(); // Returns an array of the user's settings.
2.) 获取特定设置。
$user = App\User::first(); $user->settings()->get('some.setting'); $user->settings()->get('some.setting', $defaultValue); // With a default value. $user->settings('some.setting'); // Quicker access.
3.) 添加或更新设置。
$user = App\User::first(); $user->settings()->set('some.setting', 'new value'); $user->settings()->update('some.setting', 'new value');
4.) 确定模型是否有特定设置。
$user = App\User::first(); $user->settings()->has('some.setting');
5.) 从模型中删除设置。
$user = App\User::first(); $user->settings()->delete('some.setting'); $user->settings()->forget('some.setting');
6.) 为新模型设置默认设置。
如果您在模型中定义了$defaultSettings
作为数组属性,我们将使用其值作为任何未设置设置的新创建模型默认设置。
User.php
use Cklmercer\ModelSettings\HasSettings; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable { use HasSettings; /** * The model's default settings. * * @var array */ protected $defaultSettings = [ 'homepage' => '/profile' ]; // truncated for brevity.. }
7.) 指定允许的设置。
如果您将$allowedSettings
定义为数组属性,则只有与$allowedSettings
数组中的值匹配的设置才会保存到模型中。
User.php
use Cklmercer\ModelSettings\HasSettings; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable { use HasSettings; /** * The model's allowed settings. * * @var array */ protected $allowedSettings = ['homepage']; // truncated for brevity.. }
8.) 使用除settings()以外的其他方法名
如果您希望使用除settings
以外的其他名称,可以通过定义$mapSettingsTo
属性来实现。这简单地将对方法的调用(如config()
)映射到settings()
方法。
User.php
use Cklmercer\ModelSettings\HasSettings; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable { use HasSettings; /** * The settings field name. * * @var string */ protected $mapSettingsTo = 'config'; // truncated for brevity.. }