首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel leftJoin从第二个表返回null

问Laravel leftJoin从第二个表返回null
EN

Stack Overflow用户
提问于 2022-07-26 19:45:19
回答 1查看 22关注 0票数 0

我有两张桌子duty_sheets

代码语言:javascript
复制
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

代码语言:javascript
复制
id | centerId | inspectorId | A  | B | C | examiId
 1 |    1     |     1       |  1 | 5 | 8 |   1
 2 |    2     |     9       |  9 | 1 | 6 |   1

这是我的密码

代码语言:javascript
复制
$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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-26 19:52:34

问题在于左联接。

代码语言:javascript
复制
->where("duty_sheets.centerId", 'feedback.centerId')

这将针对“feedback.centerId”值构建一个where

代码语言:javascript
复制
duty_sheets.centerId='feedback.centerId' 

你需要使用

代码语言:javascript
复制
   ->on("duty_sheets.centerId",'=', 'feedback.centerId')

或

代码语言:javascript
复制
 ->whereColumn("duty_sheets.centerId", 'feedback.centerId')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73128959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档