Laravel Seeder使用rand设置关联用户数为何无法随机?
问题原因
你当前的代码里,rand(1, 3)在链式调用初始化阶段就会执行完毕,只会生成一个固定随机数,之后所有100个Product都会复用这个数值创建关联用户,所以所有产品的关联用户数完全一致。
解决方案
要让每个Product独立生成1-3的随机数,需要把随机数生成逻辑放在**闭包(匿名函数)**里传给hasUsers。闭包会在每个Product创建时触发执行,每次都会重新计算随机数。
修改后的代码:
Product::factory(100) ->hasUsers(fn() => rand(1, 3)) ->create();
如果你的Laravel版本不支持箭头函数,可使用传统匿名函数写法:
Product::factory(100) ->hasUsers(function () { return rand(1, 3); }) ->create();
内容的提问来源于stack exchange,提问作者panthro
相关产品推荐
相关产品推荐

