如何从指定$department用户集合中获取关联的Journal关系数据
解决方案
有两种实现方式,可根据你的实际业务场景选择:
方案1:基于已获取的部门用户集合查询
如果你已经提前拿到了部门用户集合,直接提取用户ID做筛选即可:
// 从已有部门用户集合提取所有用户ID $userIds = $department->pluck('id'); $users = User::whereIn('id', $userIds) ->where('name', '<>', 'Manager') ->with(['journal' => function($query) use ($request){ $query->where('schedule', 'like', "%" . $request->date . "%"); }])->get();
方案2:优化查询,无需提前查询部门用户集合
如果不需要单独使用提前获取的$department用户集合,推荐用这种方式减少SQL查询次数,性能更高:
$users = User::where('department_id', 1) ->where('name', '<>', 'Manager') ->with(['journal' => function($query) use ($request){ $query->where('schedule', 'like', "%" . $request->date . "%"); }])->get();
也可以从Department模型出发用关联查询写法:
$department = Department::with(['users' => function($userQuery) use ($request) { $userQuery->where('name', '<>', 'Manager') ->with(['journal' => function($journalQuery) use ($request) { $journalQuery->where('schedule', 'like', "%" . $request->date . "%"); }]); }])->find(1); // 直接取属性即可拿到带Journal关联数据的部门用户 $usersWithJournal = $department->users;
内容的提问来源于stack exchange,提问作者Васили
相关产品推荐
相关产品推荐

