简体   繁体   English

Laravel leftJoin 从第二个表返回 null

[英]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 feedbackfeedback

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 的所有行,反馈中的相关行取决于centerIdinspectorIdexamId

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM