【发布时间】:2021-03-21 07:24:19
【问题描述】:
我需要根据搜索词过滤产品,所以我的控制器中有这个:
$activeFilters = Array(
"Display dimensions" => Array("5' inches","5.5' inches"),
"Color" => Array("Grey","Black")
);
$product = Product->whereHas("attributes", function($query) use ($activeFilters){
foreach($activeFilters as $group){
$query = $query->whereIn("product_features.text", $group);
}
})->get();
现在,如果我在活动过滤器数组中仅设置一组(例如显示尺寸)及其值,则查询将返回预期结果。当我附加第二组时,如代码中所示,结果为空,即使产品表中存在与这些过滤器匹配的产品。
【问题讨论】:
-
你在做 AND 哪里。我猜你需要一个 OR。
-
我尝试在 whereIn 子句中添加“或”,但结果是我得到了所有产品,所以很遗憾不是这样。
-
你可以使用
orWhereIn而不是whereIn
标签: php mysql laravel laravel-query-builder