2017-05-03 150 views
0

所以我有一個products表和一個categories表和一個pivot表。Laravel多對多查詢

產品products

- ID

- 命名

類別categories

- ID

- 命名

CategoryProductcategory_product

- CATEGORY_ID

- PRODUCT_ID

我想這屬於某一類別的所有產品,我已設法通過執行以下操作來得到它查詢:

$products = Category::find(3)->products; 

但我該如何從產品模型中訪問它?

$products = Product::? 

回答

0

您需要whereHas子句。 https://laravel.com/docs/5.4/eloquent-relationships#querying-relationship-existence

$products = Product::whereHas('categories', function ($query) { 
    return $query->where('id', 3); 
})->get(); 

或者你可以用連接來代替它。

$products = Product::select('products.*') 
    ->join('category_product', 'products.id', '=', 'category_product.product_id') 
    ->where('category_product.category_id', 3) 
    ->groupBy('products.id') 
    ->get(); 
+0

SQLSTATE [23000]:完整性約束違規:1052 where子句中的列'id'不明確。 這是我在運行您的代碼時得到的錯誤 – robertmylne

+0

哪個代碼段給出了該錯誤?您是否添加了其他任何條款,範圍等? – fubar

+0

第一個片段。 – robertmylne