← Агляд · Вярнуцца да README · Праца з наладамі →
Пачатак працы
Патрабаванні
- PHP 8.3 або навейшы.
- Laravel 12 або 13.
Усталяванне пакета
composer require dragon-code/laravel-model-settings
Laravel аўтаматычна знаходзіць сэрвіс-правайдар пакета.
Апублікуйце канфігурацыю і міграцыю, затым стварыце табліцу налад:
php artisan vendor:publish --tag="model_settings"
php artisan migrate
Тэг model_settings публікуе config/model_settings.php і міграцыю пакета. Па змаўчанні міграцыя
стварае табліцу settings, выкарыстоўваючы стандартнае падключэнне праграмы да базы даных.
Дадаванне трэіта
Дадайце HasSettings у кожную Eloquent-мадэль, якой патрэбныя налады:
namespace App\Models;
use DragonCode\LaravelModelSettings\Concerns\HasSettings;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use HasSettings;
}
Трэіт дадае наступныя публічныя метады:
| Метад | Прызначэнне |
|---|---|
settings() | Чытанне або змяненне выніковых налад адной захаванай мадэлі |
defaultSettings() | Чытанне або змяненне значэнняў па змаўчанні для класа мадэлі |
modelSettings() | Eloquent-сувязь для папярэдняй загрузкі |
Захаванне першай налады
Стварыце значэнне па змаўчанні для ўсіх захаваных мадэляў User:
(new User)->defaultSettings()->set('timezone', 'UTC');
Перавызначце гэта значэнне для аднаго захаванага карыстальніка:
$user = User::query()->firstOrFail();
$user->settings()->set('timezone', 'Europe/Paris');
assert($user->settings()->get('timezone') === 'Europe/Paris');
Прачытайце ўсе выніковыя налады як калекцыю з ключамі па назвах налад:
$settings = $user->settings()->all();
assert($settings->get('timezone') === 'Europe/Paris');
Выдаліце перавызначэнне, каб зноў выкарыстоўваць UTC:
$user->settings()->forget('timezone');
assert($user->settings()->get('timezone') === 'UTC');
Спачатку захоўвайце мадэлі
Выклікайце settings()->set(), setMany(), forget(), forgetMany() і purge() толькі пасля
захавання бацькоўскай мадэлі. Для незахаванай мадэлі settings()->get() вяртае null,
settings()->has() — false, а settings()->all() — пустую калекцыю, нават калі для класа ёсць
значэнні па змаўчанні. Кожны метад змянення выклікае
DragonCode\LaravelModelSettings\Exceptions\InvalidSettingsOwnerException да выканання запыту да
сховішча.
Гл. таксама
- Праца з наладамі — прыярытэты, выдаленне, ключы і значэнні.
- Канфігурацыя — выбар падключэння, табліцы і мадэлі захоўвання.
- Папярэдняя загрузка — эфектыўная загрузка налад для калекцый мадэляў.