无法在DB::select中的Laravel中的IN条件中使用参数
出于某种奇怪的原因,在我的查询中,这些参数在条件中不起作用 如果我硬编码参数,查询将返回一个结果: 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中的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::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);