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

Laravel预加载时查询主表指定列关联返回空,如何获取两张表指定列?

解决方案

核心原因

Laravel 的预加载(with)采用分两次查询的实现逻辑:先查询主表数据,提取所有关联匹配需要用到的键值(通常是主表主键),再用这批键值作为查询条件查询关联表,最后将关联数据匹配绑定到对应的主表记录上。
主表查询时未包含关联需要的主键、关联表查询时未包含和主表匹配的外键,会导致预加载完成后无法完成数据匹配,最终返回空数组。

修正代码

$users = User::select('id', 'name') // *必须包含关联匹配需要的主表主键 id*
->with(['role_user' => function($query) {
    $query->select('user_id', 'role_name'); // *必须包含和主表匹配的外键 user_id*
}])
->paginate(3);

补充说明

  • 如果是多对多关联,按需添加其他需要的 pivot 字段即可,只要保证关联匹配用的外键被选中,预加载就可以正常工作
  • 全程不需要使用 join 操作,符合你的需求

内容的提问来源于stack exchange,提问作者Sajjad Ali

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 16:39:03