2016-11-28 1 views
1

Ich habe drei Tabelle:Abrufen von Daten aus drei Tabellen Wie Daten aus der letzten Tabelle abzurufen, die erste in Laravel mit

Lehrer

id

Name

familien_name

Klassenraum

class_name

teacher_id

Studenten

Name

familien_name

Lehrer haben eine zu viele Beziehung parlamentarisch

Schüler haben Mann y to many relation with ClassRoom

Wie kann ich alle Schüler eines Lehrers mit Eloquent Methoden ohne foreach abrufen?

+0

Die in der Dokumentation ist: https: // laravel.com/docs/master/eloquent-relationships#has-many-through – mopo922

Antwort

2
$teacher = Teacher::with('classrooms.students')->find($someId); //eager load 
$studentsArray = $teacher->classrooms->pluck('students'); //array of students with duplicates 
$students = (new Collection($studentsArray))->collapse()->unique(); //collection of unique students 
+0

BadMethodCallException mit Nachricht 'Methodenlisten existieren nicht. – Sia

+1

Versuchen Sie zupfen ('Studenten') statt Listen –

+0

Vielen Dank Alex arbeitete für mich – Sia

0

in Ihrem Lehrer Modell wie unten eine neue Beziehung erstellen:

public function students() 
{ 
    return $this->hasManyThrough(Student::class, ClassRoom::class); 
} 

jetzt einfach in der Schüler-Abfrage wie folgt:

$teacher = Teacher::where('id', '1')->first(); 
$students = $teacher->students; 
+0

hasManyThrouh nur für drei Tabellen mit einer zu vielen Beziehungen Ich habe eins zu viele und viele zu viele – Sia

Verwandte Themen