2017-06-21 3 views
1

ich mein Modell Produkte haben:ManyToMany Laravel Beziehung

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'); 
    } 
} 

ich meine Kategorie Modell haben:

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'); 
    } 
} 

ich meinen Tisch products_categories haben

Ich will die Produkte aufzulisten, die Belog zu eine Kategorie also mache ich das:

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

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

Aber es funktioniert nicht, ich möchte wissen ... wie kann ich auflisten?

Ich habe alles versucht .. und es heißt Eigenschaft [Titel] existiert nicht auf dieser Sammlung Instanz.

Dank

+0

Tun Sie ein 'dd ($ product)', was ist da drin? – apokryfos

Antwort

2

Der Fehler Sie sehen aufgrund eines Tippfehler wahrscheinlich. Es sollte sein:

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

Ansonsten sieht der Rest Ihres Codes gut aus. Das Reparieren des Tippfehlers sollte es Ihnen ermöglichen, auf die Kategorien der einzelnen Produkte zuzugreifen:

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

Danke für die Antwort, es hat funktioniert: D, ich frage mich, ob ich zählen möchte, wie viele Produkte in dieser Kategorie sind? wie kann ich das machen? Danken. –

+0

Ich würde wahrscheinlich das Gegenteil erreichen - Abfrage für alle Kategorien und dann die Anzahl der Projekte in jedem zählen. – jackel414

+0

Perfekt, es hat funktioniert! : D –

Verwandte Themen