2017-06-21 161 views
1

我有我的模型產品:多對多Laravel關係

class Product extends Model 
{ 
    protected $table = 'products'; 

    protected $primaryKey = 'id_product'; 

    protected $fillable = [ 
    'id_category', 'title', 'credit', 'created_at', 'updated_at', 
    ]; 

    public function categories() 
    { 
    return $this->belongsToMany('App\Category', 'products_categories', 'id_product', 'id_category'); 
    } 
} 

我有我的分類模型:

class Category extends Model 
{ 
    protected $table = 'categories'; 

    protected $primaryKey = 'id_category'; 

    protected $fillable = [ 
    'category', 'created_at', 'updated_at', 
    ]; 

    public function products() 
    { 
     return $this->belongsToMany('App\Product', 'products_categories', 'id_product', 'id_category'); 
    } 
} 

我有我的表products_categories

我想列出belog的產品所以我這樣做:

$products = Product::with('categories')->get(); 

foreach ($products as $product) { 
    $products->title; 
} 

但它不工作,我想知道...我如何列出?

我試過所有..它說在這個集合實例中不存在屬性[標題]。

謝謝

+0

執行'dd($ product)',那裏有什麼? – apokryfos

回答

2

您看到的錯誤可能是由於輸入錯誤。它應該是:

foreach ($products as $product) { 
    $product->title; 
} 

除此之外,其餘代碼看起來不錯。修復錯字應允許您通過以下方式訪問每個產品的類別:

foreach ($products as $product) { 
    foreach ($product->categories as $category) { 
     $category->name // or other attribute 
    } 
} 
+0

感謝您的回覆,它的工作原理是:D,我想知道是否要計算該類別中有多少產品?我怎樣才能做到這一點?謝謝。 –

+0

我可能會採用相反的方式 - 查詢所有類別,然後計算每個類別中的項目數量。 – jackel414

+0

完美的工作! :d –