在我的应用程序中我有4种不同类型的过滤器的产品表第一步是用户从前端选择一些过滤器然后通过ajax我将它们推入会话并创建每种类型的过滤器的数组。下面是我写的代码但它没有工作,因为我预期它只返回结果如果没有在where子句中传递空数组但我想获取结果我们在查询中传递的任何过滤器
过滤数组
$industrytags = ['Agriculture & Farming','Medical'];
$styletags = ['Modern','Floral'];
$orientationtags = [];
$colortags = ['red','green'];
查询
$updatedproducts = Product::whereIn('industry', $industrytags)->whereIn('style', $styletags)->whereIn('orientation', $orientationtags)->whereIn('color', $colortags)->get();
它没有返回任何结果,因为现在一个过滤器类型为null但我想要一个使用可用过滤器获取数据的查询
答案 0 :(得分:0)
试试这个 -
$condition = "orientation IN ('value1', 'value2', 'value3') OR orientation IS NULL";
$updatedproducts = Product::whereIn('industry', $industrytags)
->whereIn('style', $styletags)
->whereRaw($condition)
->whereIn('color', $colortags)->get();
希望这会对你有所帮助。