2016-08-21 3 views
1

Ich habe diese Tabelle,hasManyThrough nicht funktioniert

categories: id | name | slug 
Products: id | name | slug | category_id | brand_id 
Brands: id | name | slug | 

Das Problem tritt auf, wenn ich versuche, Marken zu bringen hier in der Kategorie der Funktion.

Kategorie Model

public function brands() 
{ 
    return $this->hasManyThrough('App\Brand', 'App\Product' 'brand_id', 'id'); 
} 

Die Marke entweder nicht erscheint oder in der falschen Kategorie angezeigt.

Gibt es einen anderen Weg, um durch die Marken Produkte zu kommen?

Antwort

0

Änderung Ihrer Beziehung wie folgt:

public function brands() 
{ 
    return $this->hasManyThrough('App\Brand', 'App\Product' 'category_id','id','brand_id'); 
} 

Aber ich bezweifle, dass Sie hasManyThrough() können diese Beziehung abzurufen.
Wie auf laravel site angegeben, sollte Ihre Tabelle folgende Beziehung haben.

Category 1- * Product 1- * Brand
was nicht möglich in Ihrem Fall ist.

Ich glaube, Sie haben es zu tun manuell etwas mit wie unten:

public function Brands($category_id){ 
    $products = Category::find($category_id)->Products()->get()->pluck('brand_id'); 
    $brands = Brands::whereIn('id','=',$products)->get(); 
    return $brands; 
} 
0

Dies ist belongsToManyRelation

Kategorie Model

public function brands() 
    { 
     return $this->belongsToMany('App\Brands', 'products', 'category_id', 'brand_id'); 
    } 
Verwandte Themen