2016-04-08 6 views
0

Angenommen, wir haben eine Frucht-Tabelle wie folgt aus:Eloquent ORM gleiche Tabellenbeziehungen in Laravel 5.2

id|fruit 
---------------- 
1|apple 
2|pear 
3|orange 
4|lemon 
5|mandarin 

und dass wir diese Früchte als Varianten voneinander, ohne Hierarchie und ohne eine andere Tabelle für Varianten abgerufen werden wollten (keine hierarchischen Kommentare-> antwortet Art der Sache).

So sollte zum Beispiel eine $orange=Fruit::find(3)->fruitVariants; abgerufen werden können. Dies würde uns idealerweise alle verwandten Früchte (Zitrone, Mandarine) geben.

Die Umkehrung sollte auch möglich sein $lemon=Fruit::find(4)->fruitVariants; sollte Orange und Mandarin abrufen.

Sie sollten alle gleichwertige Varianten voneinander sein und ich habe keine Ahnung, wie dies zu tun ist. A fruit_fruit Tabelle? Irgendwelche Ideen?

Antwort

3

Sie haben recht, dass Sie eine Tabelle benötigen, um many-to-many relationship zu speichern.
Diese Beziehung ist viele zu viele, weil jede Frucht viele Varianten haben kann und jede Variante für viele Früchte passen kann.

Sie müssen also solche fruit_variants Tabelle:

+---------+----------+ 
|fruit_id |variant_id| 
+---------+----------+ 
|  3|   4| 
|  3|   5| 
|  4|   3| 
|  4|   5| 
|  5|   3| 
|  5|   4| 
+---------+----------+ 

Und auch müssen Sie diese variants Methode in Ihr Fruit Modell hinzufügen

public function variants() 
{ 
    return $this->belongsToMany('Fruit', 'fruit_variants', 'fruit_id', 'variant_id'); 
}