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



我想用伪造的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]);
}

最新更新