laravel哪里没有关系

时间:2016-12-26 04:44:05

标签: laravel eloquent

我如何查询关系并仍然包含没有关系的模型?有两种模式

  • 存储

  • 产品

// Store
public function products() {
   $this->belongsToMany('App\Store');
}

// Product
public function stores() {
   $this->belongsToMany('App\Product');
}

和一个用于连接它们的数据透视表,名为product_store。有些商店没有任何产品。我如何查询所有产品,即使那些不属于任何商店的产品,如:

Product::where('store.id', '=', 1)->get()

这就是我目前的做法。

Product::whereHas('stores', function($query) {
    $query->where('id', '=', $store_id);
});

但是laravel docs mention这个

  

检索至少有一个商店的所有商品

1 个答案:

答案 0 :(得分:6)

Product::doesntHave('stores')->orWhereHas('stores', function($query) {
    $query->where('id', '=', $store_id);
})->get();