Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从播种机向Laravel工厂传递空参数?_Php_Laravel_Laravel Seeding_Laravel Factory - Fatal编程技术网

Php 如何从播种机向Laravel工厂传递空参数?

Php 如何从播种机向Laravel工厂传递空参数?,php,laravel,laravel-seeding,laravel-factory,Php,Laravel,Laravel Seeding,Laravel Factory,我有这样一个工厂定义: 公共函数定义(){ $to=$this->faker->numberBetween(1,3); 返回[ “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个字段,但只

我有这样一个工厂定义:

公共函数定义(){
$to=$this->faker->numberBetween(1,3);
返回[
“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个字段,但只能定义一个字段,如果定义了一个字段,其他字段必须为空,工厂使用faker来确定它,但是现在,我想从播种机设置我想要的字段:

MyModel::factory()->create([
      "ad_id" => null,
      "delivery_id" => 5,
      "group_event_id" => null,
]);

但这不起作用,工厂忽略我为其他字段传递的null参数,并为这两个null参数设置随机Id。我该怎么解决呢?

您基本上需要在给工厂打电话之前进行检查。您无法传递值以便factory读取并处理它,不幸的是,情况正好相反,因此factory生成一个模板,然后该模板会被您在make/create函数中传递的数组中的值覆盖,所以你唯一能做的就是在调用creation之前进行检查并填写。

我想你要找的是:

你的问题有点太不清楚了,请发布整个工厂代码,用逻辑替换敏感的部分,当然,你所显示的应该是有用的,但这不是我的问题,我的问题是将值从播种机传递到工厂:(你能用一个更清晰的表述来更新你的问题吗?工厂的定义方法中有没有传递参数的方法?@CarlosTinnelly没有,工厂的出现比传递参数的时间要快得多。如果你选择文档,就有工厂的指令(无法回忆确切的名称)。