a1383n / laravel-eloquent-settings
使用 Laravel Eloquent Settings 轻松管理 Laravel 中模型特定的设置——一个用于简化配置的多功能包。
v0.2.0
2024-06-13 16:27 UTC
Requires
- php: ^8.1
- laravel/framework: ^9.0|^10.0|^11.0
Requires (Dev)
- larastan/larastan: ^2.0
- orchestra/testbench: ^7.0|^8.0|^9.0
- pestphp/pest: ^1.23|^2.18
- phpstan/phpstan: ^1.10
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');
设置解析器和设置设置器
该包还提供了 SettingResolver
和 SettingSetter
以处理设置解析和更新
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 许可证 许可。