Фабрики Laravel - Как сохранить вложенные отношения - PullRequest
0 голосов
/ 28 октября 2018

Я работал с фабриками Laravel и застрял с вложенными кораблями отношения.Например, у пользователя может быть много сообщений, а в сообщении много комментариев.Мне удалось сохранить сообщения с пользователем с помощью метода each (), но не удалось сохранить комментарии с сообщениями

$users = factory(App\User::class, 3)->create()
    ->each(function ($user) {
        $user->posts()->saveMany(factory(App\Post::class, 5)->make());
    });

, так как метод save () принимает массив, поэтому я должен использовать метод make () с сообщениямино теперь я не могу прикреплять комментарии к сообщениям.после часа поиска я не мог найти решение, но теперь я решил его.Я публикую его в ответах для тех, кто ищет решение, и, пожалуйста, сообщите мне, если есть более достойное решение для этого.Спасибо

1 Ответ

0 голосов
/ 28 октября 2018

Вот как я это решаю:

$users = factory(App\User::class, 3)->create()
        ->each(function ($user) {
            $user->posts()->saveMany(factory(App\Post::class, 5)->make());
        });
foreach ($users as $user){
  foreach ($user->posts as $post){
    $post->comments()->saveMany(factory(App\Comment::class, 5)->make());
  }
}
...