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

问题描述 投票:0回答:2

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

我用这段代码为每个用户创建了1条评论:

factory(App\User::class, 50)->create()->each(function ($u) {
    $u->comments()->save(factory(App\Comment::class)->make());
});
php laravel faker
2个回答
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]);
}

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)随机化数字。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.