mrdth / laravel-model-settings
为任何 Eloquent 模型添加设置的简单方法
v1.1.0
2024-07-27 21:48 UTC
Requires
- php: ^8.2
- illuminate/contracts: ^10.0||^11.0
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- larastan/larastan: ^2.9
- laravel/pint: ^1.14
- mockery/mockery: ^1.6
- nunomaduro/collision: ^8.1.1||^7.10.0
- orchestra/testbench: ^9.0.0||^8.22.0
- pestphp/pest: ^2.34
- pestphp/pest-plugin-arch: ^2.7
- pestphp/pest-plugin-laravel: ^2.3
- phpstan/extension-installer: ^1.3
- phpstan/phpstan-deprecation-rules: ^1.1
- phpstan/phpstan-phpunit: ^1.3
README
此包利用 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)。请参阅 许可证文件 了解更多信息。