我想用faker PHP库生成假数据,但我希望为每个用户创建3条评论。我该怎么做?
我使用以下代码为每个用户创建了1条评论:
factory(App\User::class, 50)->create()->each(function ($u) {
$u->comments()->save(factory(App\Comment::class)->make());
});
答案 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]);
}