【发布时间】:2025-11-25 03:20:05
【问题描述】:
我有一个产品过滤器选项。用户在产品类别页面中有不同类型的产品过滤器。
标签
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);
});
当我选择移动品牌和移动颜色的组合时遇到问题/如果我只选择一个过滤器组,那么它可以正常工作
【问题讨论】:
-
你能发帖
$requestArray['filterFrom']吗? -
@TsaiKoga.updated
-
如果您过滤您发布的filterForm,它有问题吗?
-
@如果我的过滤器只选择了移动波段和颜色的组合,那么它返回零产品
-
是的,试试我的代码。
标签: php mysql sql laravel laravel-5