Wie Kette DB-Beziehungen in Laravel (mehrere has_many?)
Bin ich mit Laravel, was toll ist, aber ich bin festgefahren auf ein Problem mit der Datenbank.
Sagen wir, wir haben drei Tabellen, etwa so:
TABELLE 1: Seiten
id | route | title
TABELLE 2: Elemente
id | page_id | type
TABELLE 3: Inhalte
id | element_id | data
Ich möchte, um eine einzelne Auswahl, für die Seite, die wiederum wählen Sie alle Elemente mit, die Seiten-id, und für jedes der Elemente, die Sie sollten wählen Sie alle Zeilen mit Inhalt des element-id.
Ich möchte eine statische load_by_route($route) Funktion in der Page-Modell, dass, wenn aufgerufen, wird die route zu laden und kehren Sie die Seite info, sowie die Elemente und Inhalte wie oben beschrieben. Im Idealfall würde es wieder zu einem einzigen Objekt/array mit allen diese info.
Im Grunde bin ich nicht sicher, wie Sie Sie auf die Kette has_many() ruft zusammen, so daß ich die zwei-Ebenen-Beziehung.
InformationsquelleAutor der Frage Pete | 2013-03-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Blick in eager loading. Diese sollte das tun, was Sie wollen.
https://laravel.com/docs/master/eloquent-relationships#eager-loading
InformationsquelleAutor der Antwort Collin James
Collin James Antwort gibt Sie ein Objekt mit allen Daten. Ich bin hierher gekommen, weil ich wollte nur zum iterieren über alle
contents
gehören auf eine Seite. Hier ist, wie man zu einer solchen Sammlung:Den
with
macht Sie sicher, dass Sie eager loading und diehas
stellt sicher, dass wir nur eine Iteration über Elemente mit Inhalt.Aus jedem content-element Sie können das element info aus der
belongsTo
Beziehung, die wir auch erhalten mit eager loading:InformationsquelleAutor der Antwort Adam