Heim >Datenbank >MySQL-Tutorial >Wie rufe ich verschachtelte Beziehungen in Laravel ab: Zugriff auf Personen, die ein Ereignis abonniert haben, über mehrere Zwischentabellen hinweg?
Verschachtelte Beziehungen in Laravel
Verschachtelte Beziehungen ermöglichen Ihnen den Zugriff auf Modelle, die mehrere Ebenen tief in Ihrer Datenstruktur liegen. Dies kann in Laravel eine Herausforderung sein, insbesondere bei komplexen Beziehungen.
Problemstellung:
Abrufen einer Liste von Personen, die ein Ereignis abonniert haben, trotz mehrerer Zwischentabellen zwischen den Ereignis- und Personenmodellen.
Datenbankstruktur:
Die Datenbankstruktur umfasst die folgenden Tabellen: Ereignisse, Städte, Unternehmen und Personen.
Modellbeziehungen:
Fehlgeschlagene Versuche:
Versuche zu Die Verwendung der Methoden with() und whereHas() hat nicht zum gewünschten Ergebnis geführt.
Lösung:
Um dieses Problem zu lösen, verwenden Sie die folgende Abfrage:
return Event::with('city.companies.persons')->get();
Diese Abfrage lädt eifrig die Stadt, Unternehmen und Personen, die mit der Veranstaltung verbunden sind.
Alternativ, wenn Sie nur bestimmte Felder aus der Personentabelle auswählen möchten:
return Event::with(['city.companies.persons' => function ($query) { $query->select('id', '...'); }])->get();
Dieser Ansatz stellt sicher, dass nur die angegebenen Felder abgerufen werden, wodurch die Abfrage optimiert wird.
Das obige ist der detaillierte Inhalt vonWie rufe ich verschachtelte Beziehungen in Laravel ab: Zugriff auf Personen, die ein Ereignis abonniert haben, über mehrere Zwischentabellen hinweg?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!