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
Freigeben: 2024-11-17 02:38:03
Original
576 Leute haben es durchsucht

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();
Nach dem Login kopieren

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();
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage