Laravel加入两个表,如果找不到记录,则获取NULL ROW

时间:2018-02-04 21:21:36

标签: mysql laravel

让我们考虑两个表,"用户"和"数据"

"用户"表格数据(总行数 - > 2) - >

user_id      name         email
1            Test      test@test.com
2            Try       try@try.com

"数据"表格数据(总行数 - > 1) - >

data_id     user_id    json_field
1               1           {}

使用Laravel Join

DB::tabe("users")->join("data" , "users.user_id" , "=" , "data.user_id")->get();

about查询只返回一行,即

user_id      name      email            data_id    json_fied
  1          Test    test@test.com         1          {}

但是,我想得到两行的结果,如下所示:

user_id      name      email            data_id    json_fied
  1          Test    test@test.com         1          {}
  2          Try     try@try.com          NULL       NULL

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

而不是leftJoin使用join

<强>解释

INNER JOINleftJoin,它会选择两个表中具有匹配值的记录。

LEFT JOINusers,它返回左表(在您的情况下为data)中的所有记录,以及来自右表(NULL表的匹配记录)。如果没有匹配,结果是USBdevice.open()来自右侧。