在我的控制器中,我设置了两个过滤器,用于分类(有一个关系) 和一个商店(多对多的关系)
public function products($filter = NULL, $key = NULL)
{
$query = Product::query();
$query = $query->where('status', '=', 1);
if ($filter === 'category') {
$cat = Category::where('slug', '=', $key)->select('id')->firstOrFail();
$query = $query->where('category_id', '=', $cat->id);
}
if ($filtro === 'shop') {
$shop = Shop::where('slug', '=', $key)->select('id')->firstOrFail();
// HOW TO ADD HERE A WHERE IN MANY TO MANY RELATIONSHIP*
}
$products = $query->whereNotNull('startdate')->with('shops', 'categories')->orderby('startdate')->get();
*如何添加到查询A只有在设置了“购物”过滤器时才会有多少关系?
答案 0 :(得分:1)
使用whereHas()
方法,如下所示:
$query->whereHas('shops', function($q) use($shop) {
$q->where('id', $shop->id);
});
在shops
模型中定义Product
关系,以使其发挥作用。