a1383n/laravel-eloquent-settings

使用 Laravel Eloquent Settings 轻松管理 Laravel 中模型特定的设置——一个用于简化配置的多功能包。

v0.2.0 2024-06-13 16:27 UTC

This package is auto-updated.

Last update: 2024-09-14 10:50:55 UTC


README

Laravel Eloquent Settings 是一个强大的包,用于管理 Laravel 应用程序中的模型特定设置。此包提供了一种灵活且高效的方法来定义、处理和持久化 Eloquent 模型的设置。

安装

您可以通过 composer 安装此包

composer require a1383n/laravel-eloquent-settings

接下来,发布配置文件

php artisan vendor:publish --provider=LaravelEloquentSettings\EloquentSettingsServiceProvider

这将创建一个配置文件在 config/eloquent_settings.php 以及一个迁移在 database/migration/**_create_eloquent_settings_table.php

运行迁移以创建必要的数据库表

php artisan migrate

使用方法

在您的模型上实现 HasSettingsInterface

首先,确保您的模型实现了 HasSettingsInterface 并使用了 HasSettings 特性。实现 definedSettings 方法以定义您的模型的设置

use Illuminate\Database\Eloquent\Model;
use LaravelEloquentSettings\Enums\SettingValueType;
use LaravelEloquentSettings\Contracts\HasSettingsInterface;
use LaravelEloquentSettings\HasSettings;

class User extends Model implements HasSettingsInterface
{
    use HasSettings;

    public function definedSettings(SettingDefinition $definition): void
    {
        $definition->define('locale')
            ->type(SettingValueType::STRING)
            ->default('fa-IR');

        $definition->define('extra')
            ->type(SettingValueType::ARRAY)
            ->nullable();
    }
}

使用设置

定义设置后,您可以通过 SettingHandler 与其交互

use App\Models\User;

$user = User::findOrFail(1);
$user->getSettingValueByName('locale');
$user->setSettingValueByName('locale', 'en-US');

设置解析器和设置设置器

该包还提供了 SettingResolverSettingSetter 以处理设置解析和更新

use LaravelEloquentSettings\EloquentSettings;
use LaravelEloquentSettings\SettingResolver;
use LaravelEloquentSettings\SettingSetter;
use App\Models\User;

$handler = EloquentSettings::getHandler(User::find(1));

$resolver = new SettingResolver($handler);
$value = $resolver($settings->get('locale'));

$setter = new SettingSetter($handler);
$setter('extra', ['foo' => 'bar']);

配置

您可以通过修改 eloquent_settings.php 配置文件来自定义包的行为。根据您的需求调整数据库表名和默认值等设置。

致谢

此包是为了满足在 Laravel 应用程序中管理模型特定设置的需要而灵感的简单而有效的方式。

许可

Laravel Eloquent Settings 是开源软件,受 MIT 许可证 许可。