You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel关联两张表:如何返回无匹配记录的NULL行?

解决Laravel Join查询只返回匹配行的问题

嘿,这问题我碰到过好多次!你现在用的应该是Laravel默认的join()方法,它本质是内连接(Inner Join)——这种连接逻辑只会返回两张表中满足匹配条件的行,所以当users有2条数据、data只有1条能匹配时,自然就只返回1条结果。

要实现你要的「保留users所有行,无匹配的data字段用NULL填充」的效果,你需要换成左连接(Left Join),在Laravel里对应的方法是leftJoin():

示例代码对比

原来的内连接(仅返回匹配行)

// 只会返回users和data匹配的1条数据
$results = DB::table('users')
    ->join('data', 'users.id', '=', 'data.user_id')
    ->get();

修改后的左连接(返回users所有行)

// 返回users的2条数据,无匹配data的行对应字段为NULL
$results = DB::table('users')
    ->leftJoin('data', 'users.id', '=', 'data.user_id')
    ->get();

简单解释下:左连接会以你指定的左表(这里是users)为基准,保留它的所有记录,右表(data)中没有匹配的字段就用NULL填充,完美贴合你的需求~

内容的提问来源于stack exchange,提问作者Johny Pie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:29:11