2016-12-26 2 views
1

어떻게 관계를 쿼리하고 관계가없는 모델을 포함 할 수 있습니까? 두 모델laravel whereHas 관계 없음

  • 스토어

  • 제품

코드

// 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

같은

내가`$ 제품 -> stores` 하나를 필터링 할 수있는 방법을 적어도 하나의 저장

답변

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

모든 제품을 검색합니다. 즉 $ store_id – bazi

+0

이 쿼리는 $ store_id가 –

+0

인 매장 제품을 제공합니다. 또한 어떤 상점에도없는 제품을 제공합니다. 하지만 나는 또한 $ store_id와 다른 상점에없는 제품을 원합니다. – bazi