2016-06-09 4 views
2

enter image description hereZugriff auf alle Daten aus mehreren verknüpften Tabellen in Laravel 5,2

jetzt in allen vier Modellen ich habe Beziehungen als hasmany() und belongsTo() zur Verfügung gestellt.

Wenn ich versuchte, auf eine bestimmte Stadt von der Tabelle zuzugreifen, und ihr zugehöriger Zustand, der den folgenden Code verwendet, funktioniert es gut.

$citydetails=City_table::with('states')->find($id); 

Jetzt möchte ich auch gleichzeitig auf den zugehörigen Ländernamen für den Staat zugreifen. Ich habe versucht, dies zu tun:

$citydetails=City_table::with('states','countries')->find($id); 

Das gibt mir eine Fehlermeldung, ich kenne diese Art und Weise wird es nicht funktionieren, weil Stadt und Land nicht direkt miteinander verbunden sind, aber ich brauche Daten wie diese zugreifen zu können, wenn ich Zugriff eine bestimmte Stadt, dann möchte ich, dass es sowohl Staat als auch Land im Ergebnis ist.

+1

Ich denke, Sie müssen eine Punktnotation verwenden, um geschachtelte Beziehungen zu erhalten. Etwas wie 'with ('states.countries')', wird Staaten und ihre Länder bekommen. Das geht davon aus, dass Ihr states-Modell eine 'countries()' -Methode enthält, die die Beziehung behandelt. – Jeemusu

+0

danke Kumpel das klappte mit Punktnotation – dollar

+0

Offtopic: Mit welcher App hast du die Grafik erstellt? Ich bin nur Neugierig. – Kovah

Antwort

3

Sie können die Punktnotation verwenden, um auf verschachtelte Beziehungen zuzugreifen. Um die zu zitieren.

Um eifrige geschachtelte Beziehungen zu laden, können Sie die "Punkt" -Syntax verwenden. Für Beispiel wollen wir eifrig Last all der Autoren des Buches und alle die persönlichen Kontakte der Autor in einer Eloquent Aussage:

$citydetails = City_table::with('states.countries')->find($id); 
:

$books = App\Book::with('author.contacts')->get();

In Ihrem Fall, das etwas aussehen würde,