工厂创建具有不同数量关系的多个模型

jos*_*sei 5 php laravel laravel-factory

我使用以下代码创建 20 个帖子,每个帖子有 3 条评论。

Post::factory()
    ->times(20)
    ->has(Comment::factory()->times(3))
    ->create()
Run Code Online (Sandbox Code Playgroud)

相反,我想创建 20 个帖子,每个帖子都有随机数量的评论(例如帖子 1 有 2 条评论,帖子 2 有 4 条评论等)

这不起作用,每个帖子都有相同(随机)数量的评论。

Post::factory()
    ->times(20)
    ->has(Comment::factory()->times(rand(1, 5)))
    ->create()
Run Code Online (Sandbox Code Playgroud)

我怎样才能实现这个目标?

apo*_*fos 6

->times据我所知,如果您使用的是每个模型,则不可能拥有动态数量的相关模型。您可以尝试:

collect(range(0,19))
   ->each(function () {
       Post::factory()
          ->has(Comment::factory()->times(rand(1,5)))
          ->create();
});
Run Code Online (Sandbox Code Playgroud)

这应该会一一创建 20 个帖子,每个帖子都有随机数量的评论。可能会慢一点,但可能不会慢很多