2017-05-09 8 views
1

私は人のテーブルを持っている、人々は多くの部門にすることができます。Laravelは雄弁と結合する

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

私が部署テーブルを持って、部門は、多くの人々

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

人テーブル

-id 
-name 
-title 

部署テーブル

-id 
-person_id 
-department_id 
を持っています

person_idは外部キーです。

だから、私はこの

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

を行うことができます部門2(会計)からのすべての人々を返すように探しています。しかし、これは唯一の自分のIDを返します。それはスタートですが、名前とタイトルを返すにはどうすればいいですか?私はforeachをやらなければならないのですか、または参加する方法がありますか?

答えて

1

whereHas関係してクエリを制限します:

$departmentId = 2; 

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

素晴らしいです!ありがとう。 – LeBlaireau

2

私は何かが欠けていない限り、これは人々を得るはずです。

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

$people = $department->people;