[英]Laravel leftJoin returns null from 2nd table
I have 2 table duty_sheets
我有 2 张表
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
and feedback
和
feedback
id | centerId | inspectorId | A | B | C | examiId
1 | 1 | 1 | 1 | 5 | 8 | 1
2 | 2 | 9 | 9 | 1 | 6 | 1
here is my code这是我的代码
$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);
to retrieve "All rows from DutySheet where p20 = 1 and dutysheet.examId = 1, and relevant rows from feedback depend on centerId
, inspectorId
and examId
.检索“DutySheet 中 p20 = 1 和 dutysheet.examId = 1 的所有行,反馈中的相关行取决于
centerId
、 inspectorId
和examId
。
The problem is that the query return feedback.id as null while the record exist in feedback table with the ids.问题是查询返回 feedback.id 为 null 而记录存在于带有 id 的反馈表中。
Laravel version = 9 Laravel 版本 = 9
The problem is in left Join问题在左加入
->where("duty_sheets.centerId", 'feedback.centerId')
This build a where against the value 'feedback.centerId'这会针对值“feedback.centerId”构建一个 where
duty_sheets.centerId='feedback.centerId'
You need use你需要使用
->on("duty_sheets.centerId",'=', 'feedback.centerId')
Or或者
->whereColumn("duty_sheets.centerId", 'feedback.centerId')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.