gpt4 book ai didi

php - Laravel 标签和查询

转载 作者:行者123 更新时间:2023-12-04 10:46:13 24 4
gpt4 key购买 nike

我有一个产品过滤器选项。用户在产品类别页面中有不同类型的产品过滤器。

标签

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);
});

我在选择移动品牌和移动颜色的组合时遇到问题/如果我只选择一个过滤器组,那么它工作正常

最佳答案

颜色 mobile_brand 都在tags.slug ,

slug 不能同时具有 color 和 mobile_brand 的值。

做这样的事情:

// You need to build the combination of mobile_band and color to array:
$slugs = array(['green', 'mi'], ['green', 'lg']);

$response = Product::with(['productCategory'])->where(function($query) use ($slugs) {
forEach ($slugs as $tags)
{
$query->orWhere(function($query) use ($tags) {
forEach($tags as $tag)
{
$query->whereHas('productTags', function($query) use ($tag){
$query->where('tags.slug', $tag);
});
}
});
}
});

关于php - Laravel 标签和查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59691352/

24 4 0