2017-05-09 11 views
1

Ich habe einen Menschen Tisch, Menschen können in vielen Abteilungen sein.Laravel Join mit beredten

public function departments() 
    { 
     return $this->belongsTo('App\Models\Departments', 'id'); 
    } 

ich Abteilungen Tisch haben, hat eine Abteilung viele Menschen

return $this->hasMany('App\Models\People', 'id', 'department_id'); 

Die Leute Tabelle

-id 
-name 
-title 

Die Tabelle Abteilungen

-id 
-person_id 
-department_id 

Die person_id ist der Fremdschlüssel.

Also, wenn ich bin auf der Suche alle Personen aus Abteilungen 2 (Buchhaltung) zurückzukehren ich diesen

$depts = $departments::where('department_id', 2)->get(); 
    foreach($depts as $dept) { 
    // do something 
    } 

tun können, aber dies gibt nur ihre ID. Es ist ein Anfang, aber wie mache ich den Join, um den Namen und den Titel zurückzugeben? Muss ich die Foreach machen oder gibt es eine Möglichkeit, einen Join zu machen?

Antwort

1

whereHas wird die Abfrage durch eine Beziehung einschränken:

$departmentId = 2; 

People::whereHas('departments', function($query) use ($departmentId) { 
    return $query->where('id', $departmentId); 
}) 
->get(); 
+0

so toll! Vielen Dank. – LeBlaireau

2

Dies sollte die Leute bekommen, es sei denn, ich verpasse etwas.

$department = Department::with(['people'])->find(2); 

$people = $department->people; 
Verwandte Themen