Laravel加入雄辩的

时间:2017-05-09 15:45:38

标签: laravel join eloquent

我有一张人员表,人们可以在很多部门。

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是外键。

因此,如果我希望从部门2(会计)返回所有人员,我可以这样做

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

但这只会返回他们的身份。这是一个开始,但我如何进行连接以返回名称和标题?我必须做foreach还是有办法加入?

2 个答案:

答案 0 :(得分:2)

除非我遗漏了某些东西,否则这应该让人们接受。

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

$people = $department->people;

答案 1 :(得分:1)

whereHas将通过关系约束查询:

$departmentId = 2;

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