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

时间:2018-04-07 11:06:49

标签: php laravel faker

我想用faker PHP库生成假数据,但我希望为每个用户创建3条评论。我该怎么做?

我使用以下代码为每个用户创建了1条评论:

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

2 个答案:

答案 0 :(得分:0)

我认为它应该是这样的:

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

如果您想创建多个评论,请使用->saveMany()代替->save()->save()接收Illuminate\Database\Eloquent\Model的实例,->saveMany() Illuminate\Database\Eloquent\Collection的实例factory(App\Comment::class, 3)->make()返回。

     

注意:我会使用rand(1, 5)随机化数字。

答案 1 :(得分:0)

我找到了解决方案:)

我使用了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]);
}