我想用伪造的PHP库生成假数据,但我想为每个用户创建3条注释。我应该怎么做?
我确实使用此代码为每个用户创建 1 条评论:
factory(AppUser::class, 50)->create()->each(function ($u) {
$u->comments()->save(factory(AppComment::class)->make());
});
我认为应该是这样的:
factory(AppUser::class, 50)->create()->each(function ($u) {
$u->comments()->saveMany(factory(AppComment::class, 3)->make());
});
如果要创建多个注释,请使用
->saveMany()
而不是->save()
。->save()
接受IlluminateDatabaseEloquentModel
的实例,同时->saveMany()
factory(AppComment::class, 3)->make()
返回的IlluminateDatabaseEloquentCollection
实例。注意:我会使用
rand(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]);
}