Heim >Datenbank >MySQL-Tutorial >Wie rufe ich verschachtelte Beziehungen in Laravel ab: Zugriff auf Personen, die ein Ereignis abonniert haben, über mehrere Zwischentabellen hinweg?

Wie rufe ich verschachtelte Beziehungen in Laravel ab: Zugriff auf Personen, die ein Ereignis abonniert haben, über mehrere Zwischentabellen hinweg?

Linda Hamilton
Linda HamiltonOriginal
2024-11-17 02:38:03579Durchsuche

How to Retrieve Nested Relationships in Laravel: Accessing Persons Subscribed to an Event Across Multiple Intermediary Tables?

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:

  • Veranstaltung: Gehört zur Stadt
  • Stadt: Hat viele Unternehmen, hat viele Veranstaltungen
  • Unternehmen: Gehört zur Stadt , Hat viele Personen
  • Person: Gehört zur Firma, gehört zu vielen Veranstaltungen (über EventScore)

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn