mrdth/laravel-model-settings

为任何 Eloquent 模型添加设置的简单方法

v1.1.0 2024-07-27 21:48 UTC

This package is auto-updated.

Last update: 2024-09-27 22:13:32 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

此包利用 Eloquents JSON 转换来提供向任何 Eloquent 模型添加设置的简单方法。

安装

您可以通过 composer 安装此包

composer require mrdth/laravel-model-settings

您可以使用以下命令发布配置文件

php artisan vendor:publish --tag="laravel-model-settings-config"

这是已发布配置文件的内容

return [
    'column' => env('MRDTH_MODEL_SETTINGS_COLUMN_NAME', 'settings'),
];

用法

迁移

首先,将设置列添加到您的模型迁移中。

...
    $table->json('settings')->nullable();
...

对于现有模型,您可以使用我们的 artisan 命令创建迁移。

php artisan make::msm {model}

要更改用于设置的列,您可以在 .env 文件中更新 MRDTH_MODEL_SETTINGS_COLUMN_NAME

模型

接下来,将 HasSettings 特性添加到您希望具有设置的任何 Eloquent 模型中。

...
use Illuminate\Notifications\Notifiable;
use Mrdth\LaravelModelSettings\Concerns\HasSettings;

class User extends Authenticatable
{
    use HasFactory, Notifiable, HasSettings;
...

使用模型设置

一旦添加了特性,您就可以使用方法与设置交互。

$user = User::find(1);
$user->hasSetting('use custom avatar'); // false

$user->setSetting('use custom avatar', true);
$user->hasSetting('use custom avatar'); // true
$user->getSetting('use custom avatar'); // true

$user->updateSetting('use custom avatar', false);
$user->getSetting('use custom avatar'); // false
$user->getSetting('non-existent setting'); // null
$user->getSetting('non-existent setting', 'default value'); // 'default value'

$user->getSettings(); // ['use custom avatar' => false]

$user->deleteSetting('use custom avatar');
$user->hasSetting('use custom avatar'); // false

$user->deleteSettings();

查询作用域

您还可以根据其设置查询模型。

$users = User::whereSetting('use custom avatar')->get(); // Returns all users with the setting 'use custom avatar'
$users = User::whereSetting('use custom avatar', true)->get(); // Returns all users with the setting 'use custom avatar' set to true

测试

composer tests

变更日志

请参阅 CHANGELOG 了解最近更改的详细信息。

鸣谢

许可证

MIT 许可证 (MIT)。请参阅 许可证文件 了解更多信息。