You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Laravel中如何使用Factory创建带随机数量关联评论的多篇文章

问题原因

你写的rand(1, 5)只会在构造工厂调用链时执行1次,生成的固定数值会被复用给所有20篇Post,所以所有文章的评论数都一致。

解决方案

方案1(兼容所有Laravel 8+版本)

使用afterCreating回调,每创建一篇Post就单独为它生成随机数量的关联评论:

Post::factory()
    ->times(20)
    ->afterCreating(function (Post $post) {
        Comment::factory()->times(rand(1, 5))->for($post)->create();
    })
    ->create();

方案2(Laravel 9+ 更简洁的写法)

直接给评论工厂的count()方法传入匿名函数,Laravel会在创建每篇Post时单独执行该函数生成随机数:

Post::factory()
    ->times(20)
    ->has(Comment::factory()->count(fn () => rand(1, 5)))
    ->create();

内容的提问来源于stack exchange,提问作者jose

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 09:15:03