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

Коллбэки фабрики модели в Laravel

Иногда после сохранения модели нужно сделать ещё шаг: создать профиль, записать настройки или прикрепить файл. Для этого в фабрике используют коллбэки.

Коллбэки задают в методе configure класса фабрики. afterCreating срабатывает после create:

<?php use App\Models\User; public function configure(): static { return $this->afterCreating(function (User $user) { $user->profile()->create([ 'bio' => fake()->sentence(), ]); }); } ?>

Теперь каждый вызов User::factory()->create() создаст пользователя и связанный профиль. При make коллбэк не выполняется - записи в базе ещё нет.

Коллбэк можно повесить и на конкретный вызов, без изменения класса фабрики:

<?php User::factory() ->afterCreating(function (User $user) { // дополнительная логика }) ->create(); ?>

Есть также afterMaking - он срабатывает после make и create, когда объект модели уже собран, но до или после сохранения в зависимости от метода.

Коллбэки в классе фабрики удобны, когда дополнительное действие нужно при каждом создании записи этого типа.

Добавьте afterCreating, который создает профиль для каждого нового пользователя.

Почему afterCreating не срабатывает при make?

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