2017-05-09 1 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를해야합니까, 아니면 join을 할 수있는 방법이 있습니까?

답변

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;