繁体   English   中英

leftJoin 在 laravel eloquent 中无法正常工作?

[英]leftJoin not working properly in laravel eloquent?

我正在写一个查询,其中包含 laravel 中的 2 个表。 当只有父表中有数据时,我得到了正确的响应。 当我尝试在子表中添加数据时,我的查询结果没有给我正确的响应。

父表: CASES (caseId) <- 主键 子表: NOTICES (noticeId) <- 主键

案例中的虚拟数据:

caseId | caseName | caseNumber | customerId 
1      | case1    | 1234       | 90
2      | case2    | 890        | 90
3      | case3    | 8900       | 90

通知中的虚拟数据:

noticeId | noticeName | noticeData  | caseId | custId
1        | notice1    | {no:1;no1:2}| 1      | 90

当前 output:

{
  caseId : 1,
  caseName : case1,
  caseNumber : 1234,
  noticeId : 1,
  noticeName : notice1,
  noticeData : {no:1;no1:2},
},
{
  caseId : 2,
  caseName : case2,
  caseNumber : 890,
  noticeId : 1,
  noticeName : notice1,
  noticeData : {no:1;no1:2},
},
{
  caseId : 3,
  caseName : case3,
  caseNumber : 8900,
  noticeId : 1,
  noticeName : notice1,
  noticeData : {no:1;no1:2},
},

预期 Output:

{
      caseId : 1,
      caseName : case1,
      caseNumber : 1234,
      noticeId : 1,
      noticeName : notice1,
      noticeData : {no:1;no1:2},
    },
    {
      caseId : 2,
      caseName : case2,
      caseNumber : 890,
      noticeId : null,
      noticeName : null,
      noticeData : null,
    },
    {
      caseId : 3,
      caseName : case3,
      caseNumber : 8900,
      noticeId : null,
      noticeName : null,
      noticeData : null,
    },

我的查询:

$data =DB::table('CASES')
                ->select('CASES.id','CASES.caseName','CASES.caseNumber','NOTICES.noticeName', 'NOTICES.noticeData')
                ->leftjoin('NOTICES', 'CASES.caseId', '=', 'NOTICES.caseId')
                ->leftjoin('NOTICES as NT', 'CASES.customerId', '=', 'NT.custId')
                ->get()->toArray();

要加入多个列,您可以使用高级联接

 $data = DB::table('CASES')
            ->select('CASES.id', 'CASES.caseName', 'CASES.caseNumber', 'NOTICES.noticeName', 'NOTICES.noticeData')
            ->leftjoin('NOTICES', function ($join) {
                $join->on('CASES.caseId', '=', 'NOTICES.caseId')->on('CASES.customerId', '=', 'NOTICES.custId');
            })->get()->toArray();

请注意,您可以在 join 子句中使用 'orOn' 而不是 'on',这取决于您想要的结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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