Перайсці да асноўнага змесціва

← Агляд · Вярнуцца да 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 да выканання запыту да сховішча.

Гл. таксама​