У меня есть опция фильтра товаров. И у пользователя есть фильтры разных типов на странице категории товаров.
Теги
id | tag_name | slug |
товары
id | proudct_name
product_tags
id | product_id | tag_id
Сейчас я пытаюсь получить все продукты, где tag_name = "ddd" и tag_name = "ddd" .
Это означает, что продукт должен относиться к обеим категориям.
$response=Product::with(['productCategory'])
->when((isset($requestArray)&&count($requestArray)),function ($query)use($requestArray){
$query->whereHas('productTags', function ($query) use ($requestArray) {
$query->where(function ($query) use ($requestArray){
if (isset($requestArray['filterForm'])&&count($requestArray['filterForm'])){
$valueArray=[];
foreach ($requestArray['filterForm'] as $key=>$value){
if (is_array($value)&&count($value)){
$query->whereIn('tags.slug',$value);
} elseif($key!="country_list"){
$query->where('tags.slug',$value);
}
}
}
});
});
})
->whereHas('productCategory',function ($query)use($request,$categoryName){
$query->where('slug',$categoryName);
});
У меня проблема, когда я выбираю комбинацию мобильного бренда и цвета мобильного телефона / если я выбираю только одну группу фильтров, тогда он работает прекрасный