我正在尝试急于加载每个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');
}