РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗pplrSpFcSt 127 of 210 menu

Состояния фабрики модели в Laravel

Если одну и ту же модель нужно создавать в разных вариантах - админ, заблокированный пользователь, черновик поста - удобны состояния фабрики.

Состояние описывают методом в классе фабрики. Он возвращает state с массивом полей:

<?php public function admin(): static { return $this->state(fn (array $attributes) => [ 'name' => 'admin', 'email' => 'admin@site.com', 'role' => 'admin', ]); } ?>

Вызов состояния идет цепочкой перед create:

<?php User::factory()->admin()->create(); ?>

Можно задать несколько состояний для одной фабрики:

<?php public function draft(): static { return $this->state(fn (array $attributes) => [ 'published' => false, ]); } public function published(): static { return $this->state(fn (array $attributes) => [ 'published' => true, ]); } ?>

Состояния переиспользуют в тестах и сидерах - не нужно каждый раз передавать один и тот же массив атрибутов вручную.

Добавьте состояние banned для пользователя с полем is_banned равным 1.

Чем состояние удобнее разового массива в create?

Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить