我正在尝试根据查询获得结果,但不知道如何以这种方式执行此操作。我有属于用户的项目。所以项目有一个user_id 然后,用户属于某个部门,因此用户表具有department_id。
如果我拉出项目的结果,我会看到类似的东西。
id: 3
projectName: This is a project
user_id: 99
deleted_at: 2016-06-15 09:28:00
created_at: 2016-06-14 14:34:16
updated_at: 2016-06-15 09:28:00
如果我提取用户数据,我会看到
id: 99
userName: Some Name
userEmail: email@email.com
active: 1
department_id: 4
created_at: 2016-06-13 09:56:59
updated_at: 2016-06-13 12:16:28
最后,如果我检查我得到的部门
id: 4
departmentName: Department A
created_at: 2016-06-09 12:09:43
updated_at: 2016-06-15 08:03:45
在我的控制器中,我可以执行以下操作来获取所有项目
$projects = Project::dateDescending()->get();
但是,这次我只想获得部门A用户制作的项目。目前我正在做
$projects = Project::dateDescending()->get();
if(!empty($projects)) {
foreach ($projects as $project) {
dd($project->user->department->where('departmentName', 'Department A'));
}
}
上面的问题是它返回一个部门对象,而不是Project对象。 所以我的计划是让部门A的用户完成所有项目。我将如何做到这一点?
由于
答案 0 :(得分:2)
假设您的模型设置正确,您可以在Eloquent
中完全轻松地完成此操作。
$projects = \App\Project::whereHas('users.departments', function($q) {
$q->where('departmentName', 'Department A');
})->get();