2017-01-30 6 views
0

Also ich habe 3 TabellenJoin 3 Tabellen mit Laravel Eloquent

size_sets - id, name 
sizes - id, name 
size_set_sizes - size_id, size_set_id 

Ich möchte eine Beziehung in size_set Modell definieren, die für diese wie sizeset

etwas, das alle sizes verfügbar abrufen würde:

public function sizes() 
    { 
     //define relationship here 
    } 

Methode sizes sollte die Namen aus der Tabelle size durchabrufenTabelle in der size_set Modell ...

Meine Anwendung ist sehr dynamisch und so musste ich mit dieser Struktur gehen. Ich habe versucht, die hasManyThrough Beziehung, aber das konnte nicht funktionieren.

+0

Scheint wie viele zu viele: https://laravel.com/docs/5.4/eloquent-relationships#many-to-many. Vielleicht möchten Sie Ihre 3 Tabellendefinition in Ihrer Frage aufräumen, da es sehr verwirrend ist - verwenden Sie Aufzählungszeichen oder etwas. – Andrew

Antwort

1

Verwenden Sie belongsToMany() Relationen wie:

class Size extends Model 
{ 
    public function sizeSets() 
    { 
     return $this->belongsToMany(SizeSet::class, 'size_set_sizes'); 
    } 
} 

class SizeSet extends Model 
{ 
    public function sizes() 
    { 
     return $this->belongsToMany(Size::class, 'size_set_sizes'); 
    } 
} 

Dann können Sie tun:

$sizeSet = SizeSet::with('sizes')->find($id); 

Dann $sizeSet->sizes wird eine Sammlung von Größen für diese Größe Satz zurück.

+0

Genau was ich getan habe – Spidi