我正在尝试急于加载每个child实体的第一个parent实体,如下所示:

$list = Parent::with('FirstChild')->get();

并且在Parent模型中定义的关系是:
public function FirstChild()
{
    return $this->hasMany('Child')->first();
}

但这会引发错误:
BadMethodCallException thrown with message "Call to undefined method Illuminate\Database\Query\Builder::addEagerConstraints()"

关键是,当我删除first()方法时,它就起作用了!

最佳答案

hasMany()用于声明与模型(自身或其他模型)的关系。在这里,您已经声明了与“孩子”的关系,因此,当您删除first()时,它将起作用。

所以这应该很好

$list = Parent::with('FirstChild')->first();

编辑
可以将hasOne()用于第一个孩子,将hasMany用于其他
public function FirstChild()
{
    return $this->hasOne('Child');
}
public function AllChild(){
   return $this->hasMany('Child');
}

10-06 02:42