Laravel工厂-如何保存嵌套关系

时间:2018-10-27 21:58:01

标签: laravel-5 eloquent laravel-seeding factories

我当时在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 :(得分:0)

这是我要解决的方法:

$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());
  }
}