2017-02-28 199 views
1

我有三張表。查詢Laravel雄辯關係

  • 分類
  • 產品
  • 品牌

我有我的類別表的產品,像這樣的關係:

public function products() 
{ 
    return $this->belongsToMany('App\Product','product_sub_categories','subcategory_id','product_id'); 
} 

我有我的產品表的關係像這樣的品牌:

public function manuf() 
    { 
     return $this->belongsTo('App\Brand','brand'); 
    } 

我在查詢分類表,以某種品牌返回該分類的產品。

例如,

我希望看到品牌菲亞特在汽車類別中的所有產品。

我試過以下,但我覺得我在想念着東西..

$search = 'fiat'; 
$products = $category->products()->where(function($query) use ($search){ 
        $query->brand->name = $search; 
       })->get(); 

回答

2

由某品牌返回該類別的產品

我以爲你知道的品牌標識和類別ID以及產品和類別具有多對多關係(因爲您使用的是belongsToMany)並且產品屬於品牌:

Product::where('brand_id', $brandId) 
     ->whereHas('categories', function($q) use(categoryId) { 
      $q->where('id', $categoryId); 
     }) 
     ->get(); 
+0

問題我得到的是,我的產品與許多類別有關,並且由products_categories關聯表定義 - 它仍然可以工作嗎? –

+0

@ Dev.Wol是的,如果兩個關係都被正確定義了,它就會工作。 –