我有两张桌子duty_sheets
centerId | centerName | p1 | p2 | p3 | p4 | ...p22 | examiId
1 | xyz | 1 | 5 | 8 | 7 | 1 | 1
2 | abc | 9 | 1 | 6 | 6 | 1 | 1和feedback
id | centerId | inspectorId | A | B | C | examiId
1 | 1 | 1 | 1 | 5 | 8 | 1
2 | 2 | 9 | 9 | 1 | 6 | 1这是我的密码
$center = DutySheet::select('duty_sheets.centerId', 'duty_sheets.centerName','feedback.id')
->leftJoin('feedback', function ($leftJoin) {
$leftJoin->on('duty_sheets.examId', 'feedback.examId')
->where("duty_sheets.centerId", 'feedback.centerId')
->where("feedback.inspectorId", 1);
})
->where("duty_sheets.examId", 1)
->where("p20", 1)
->get();
dd($center);要从DutySheet检索“p20 = 1和dutysheet.examId =1的所有行,以及反馈中的相关行依赖于centerId、inspectorId和examId。
问题是查询返回feedback.id为null,而记录存在于带有in的反馈表中。
Laravel版本=9
发布于 2022-07-26 19:52:34
问题在于左联接。
->where("duty_sheets.centerId", 'feedback.centerId')这将针对“feedback.centerId”值构建一个where
duty_sheets.centerId='feedback.centerId' 你需要使用
->on("duty_sheets.centerId",'=', 'feedback.centerId')或
->whereColumn("duty_sheets.centerId", 'feedback.centerId')https://stackoverflow.com/questions/73128959
复制相似问题