繁体   English   中英

如何将 null 参数从播种机传递给 Laravel 工厂?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM