使用faker php库模型工厂为每个用户创建多个注释

使用faker php库模型工厂为每个用户创建多个注释,php,laravel,faker,Php,Laravel,Faker,我想用faker PHP库生成假数据,但我想为每个用户创建3条注释。我该怎么做 我使用以下代码为每个用户创建1条注释: factory(App\User::class, 50)->create()->each(function ($u) { $u->comments()->save(factory(App\Comment::class)->make()); }); 我认为应该是这样的: factory(App\User::class, 50)->cr

我想用faker PHP库生成假数据,但我想为每个用户创建3条注释。我该怎么做

我使用以下代码为每个用户创建1条注释:

factory(App\User::class, 50)->create()->each(function ($u) {
    $u->comments()->save(factory(App\Comment::class)->make());
});

我认为应该是这样的:

factory(App\User::class, 50)->create()->each(function ($u) {
    $u->comments()->saveMany(factory(App\Comment::class, 3)->make());
});
如果要创建多条注释,请使用
->saveMany()
而不是
->save()
->save()
接受
illible\Database\Eloquent\Model
的一个实例,而
->saveMany()
接受
illible\Database\Eloquent\Collection
的一个实例,这就是
工厂(App\Comment::class,3)->make()
返回的内容

注意:我将使用
兰德(1,5)
随机分配数字

我找到了解决办法:)

我使用了
dd(factory(Comment::class,mt_rand(0,3))->make())
发现它返回已创建的3条注释的集合,因此我使用foreach使用以下代码行为我的用户创建所有这3条注释:

$comments = factory(Comment::class,mt_rand(0,3))->make();
  for ($i=0; $i < $comments->count(); $i++) { 
  $u->comments()->save($comments[$i]);
}
$comments=factory(Comment::class,mt_rand(0,3))->make();
对于($i=0;$i<$comments->count();$i++){
$u->comments()->save($comments[$i]);
}