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

Laravel嵌套关联查询报错:Call to a member function addEagerConstraints() on null

问题原因与解决方法

你的错误根源是OrderItem模型中的关联方法没有返回关联实例。在Laravel中,定义关联关系的方法必须返回hasOne/hasMany等关联对象,否则调用关联时会返回null,进而导致addEagerConstraints()调用失败。

修正后的代码

OrderItem模型

public function embroidery()
{
    return $this->hasOne(Embroidery::class); // 补充return语句
}

public function pattern()
{
    return $this->hasOne(Pattern::class); // 补充return语句
}

报错逻辑说明

当你执行Order::with('items.embroidery')时,Laravel会按步骤预加载嵌套关联:

  1. 先获取目标Order及其关联的items集合
  2. 尝试对所有items批量加载embroidery关联
    但因为你的embroidery方法没有返回关联对象,返回值为null,Laravel无法调用关联对象的addEagerConstraints()方法构建预加载查询,因此抛出错误。

修正后重新执行Order::with('items.embroidery')->first(),即可正常获取嵌套关联数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 10:40:54