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

Связанные записи через фабрики в Laravel

Часто нужно создать не одну запись, а модель вместе со связанными - пользователя с постами или пост для конкретного автора. Фабрики умеют создавать такие связки.

Метод has создает дочерние записи через связь модели. У пользователя есть посты - создадим троих с тремя постами каждый:

<?php use App\Models\Post; use App\Models\User; User::factory() ->has(Post::factory()->count(3)) ->create(); ?>

Laravel сам подставит user_id в посты. Если имя связи не совпадает с именем модели, его указывают вторым аргументом:

<?php User::factory() ->has(Post::factory()->count(2), 'posts') ->create(); ?>

Метод for задает родителя для дочерней модели. Сначала создают пользователя, затем посты для него:

<?php $user = User::factory()->create(); Post::factory() ->count(5) ->for($user) ->create(); ?>

Можно комбинировать for и состояния:

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

Так проще наполнять базу связанными данными для тестов и сидеров, чем вручную подставлять id в каждую вставку.

Создайте пользователя с 5 постами через has.

Создайте пост для уже существующего пользователя через for.

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