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

Laravel中eager loading的with语句选特定字段时不返回关联数据问题

问题原因

Laravel 的 预加载(Eager Loading) 机制需要依赖主表和关联表的关联键完成二次查询匹配,你没有在select中包含关联需要用到的主键字段,导致预加载逻辑无法匹配到对应的关联数据:

  • 你定义的Admin模型和roles的关联,依赖admins表的主键(通常为id)作为关联键
  • 你仅选择了username和email字段,缺失了关联必需的id字段,预加载查询拿到的roles数据无法和现有Admin记录做匹配,最终返回空数组。
解决方法

在select中补充关联需要用到的主键字段即可:

Route::get('/admins', function () {
    return Admin::select(['id', 'username', 'email'])->with('roles')->get();  
});

如果是其他关联类型(比如反向关联、多对多),只需要确保select中包含当前模型用于关联的键字段即可,多对多关联无需额外添加中间表字段,预加载会自动通过中间表完成匹配。

内容的提问来源于stack exchange,提问作者Gunaraj Khatri

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 16:45:04