Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗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 для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить