Laravel不同数据表连接查询:如何在现有联查基础上关联attendances表
三表连接查询代码调整方案(Laravel 查询构造器)
基于你现有的两表关联查询逻辑,只需要通过链式调用追加attendances表的关联规则,即可实现三表连接查询,不需要改动原有已跑通的两表关联代码。
具体调整步骤:
- 完整保留现有
users与categories表的join关联逻辑,不修改原有字段匹配规则 - 新增
attendances表的join链式调用,严格按照需求传入关联条件:attendances.User_A_ID与users.id取值相等 - 原有select查询的字段列表保持不变,可根据业务需求把考勤表需要返回的字段追加到select的参数列表中
调整完成的完整可运行代码如下:
$Attendance = DB::table('users') // 原有两表关联逻辑无修改 ->join('categories', 'users.U_category_id', '=', 'categories.id') // 新增attendances表关联 ->join('attendances', 'attendances.User_A_ID', '=', 'users.id') // 原有查询字段保留,按需追加考勤表的返回字段 ->select('users.*', 'categories.batch_name', 'attendances.*') ->get();
实用提示:如果业务中存在部分用户没有对应考勤记录的场景,直接使用默认的inner join会过滤掉这类无考勤数据的用户。这种场景下可以把新增的关联方法从
join替换为leftJoin,保证所有符合条件的用户(含无考勤记录的)都能被查询出来,替换后的关联代码为:->leftJoin('attendances', 'attendances.User_A_ID', '=', 'users.id')
内容的提问来源于stack exchange,提问作者Md Touhidul Islam
相关产品推荐
相关产品推荐

