[英]How to pass null argument to Laravel Factory from the seeder?
我有这样的工厂定义:
public function definition() {
$to = $this->faker->numberBetween(1, 3);
return [
"ad_id" => $to == 1 ? Ad::all()->random()->id : null,
"delivery_id" => $to == 2 ? Delivery::all()->random()->id : null,
"group_event_id" => $to == 3 ? GroupEvent::all()->random()->id : null,
];;
}
基本上,有3个字段,但只能定义一个,如果定义了一个,其他的必须是null,工厂使用faker来决定,但是现在,我想从播种机中设置我想要的:
MyModel::factory()->create([
"ad_id" => null,
"delivery_id" => 5,
"group_event_id" => null,
]);
但这不起作用,工厂忽略了我为其他字段传递的 null 参数,并为两个 null 参数设置了随机 ID。 我该如何解决?
您基本上需要在致电工厂之前进行检查。 您不能传递一个值,以便工厂读取并处理它,不幸的是它反过来,所以工厂制作了一个模板,然后被您在 make/create 函数中传递的数组中的值覆盖,所以您唯一能做的就是在调用创建之前进行检查并填写。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.