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
无法在DB::select中的Laravel中的IN条件中使用参数_Laravel_Laravel Query Builder - Fatal编程技术网

无法在DB::select中的Laravel中的IN条件中使用参数

无法在DB::select中的Laravel中的IN条件中使用参数,laravel,laravel-query-builder,Laravel,Laravel Query Builder,出于某种奇怪的原因,在我的查询中,这些参数在条件中不起作用 如果我硬编码参数,查询将返回一个结果: DB::从1900919010中供应商id所在的“我的”表格中选择Select* 这些不会返回结果: DB::从供应商id所在的my_表中选择Select*:供应商id[ ':vendor_id'=>内爆[ 19010, 19009, ], ]; DB::从供应商id所在的my_表中选择Select*:供应商id[ ':vendor_id'=>[ 19010, 19009, ], ]; DB::从

出于某种奇怪的原因,在我的查询中,这些参数在条件中不起作用

如果我硬编码参数,查询将返回一个结果:

DB::从1900919010中供应商id所在的“我的”表格中选择Select* 这些不会返回结果:

DB::从供应商id所在的my_表中选择Select*:供应商id[ ':vendor_id'=>内爆[ 19010, 19009, ], ]; DB::从供应商id所在的my_表中选择Select*:供应商id[ ':vendor_id'=>[ 19010, 19009, ], ]; DB::从供应商id所在的my_表中选择Select*:供应商id[ ':vendor_id'=>1900919010', ]; 拉雷维尔有一个非常好的

试试这个:

$resultCollection=DB::表“我的表” ->选择“*” ->其中‘供应商识别号’,[1900919010] ->得到; 如果您真的想使用原始查询,请尝试

像这样:

$resultCollection=DB::表“我的表” ->其中,原始“供应商id IN”,[1901019009] ->得到; 使用IN:parameters将只返回一行

您需要单独绑定参数,如:parameter1、parameter2。 因此,如果您执行以下操作,您应该会得到预期的结果

DB::select("SELECT * FROM my_table WHERE vendor_id IN (':vendor_id1, :vendor_id2',...)", 
    [':vendor_id1' => 1, ':vendor_id2' => 2]);
要动态生成参数,如果您有一个供应商ID数组,请遍历它们并创建另一个关联数组

$vendors = [];
foreach ($vendorId as $id) {
    $vendors[':vendor' . $id] = $id;
}
然后


有没有什么原因让你避免使用Elount及其功能?实际上,我使用的是一个非常复杂的查询,我需要使用DB::select。我只是简化了这个问题。我实际上需要使用DB::select,因为我正在运行复杂的查询。我只是简化了这里的查询。Wel然后请提供完整的信息,因为我们都解决了您在这里描述的问题。如果你不显示所有信息,我们也帮不了你。还有一个selectRaw方法可能有用啊,是的,这应该可以,但如果我能让它动态,那就太好了。例如,如果在一个案例中,我有10个供应商,而在另一个案例中,我有5个供应商,该怎么办。
DB::select("SELECT * FROM my_table WHERE vendor_id IN (" . implode(array_keys($vendors), ',') . ")", 
    $vendors);