我尝试急切加载每个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()
方法时,它就可以了!
答案 0 :(得分:1)
hasMany()
用于声明与模型(本身或其他人)的关系。在这里你宣布了与“Child”的关系,所以当你删除它first()
时,它就可以了。
所以这应该可以正常工作
$list = Parent::with('FirstChild')->first();
编辑 可以使用hasOne()作为第一个孩子,并且hasMany for ohter
public function FirstChild()
{
return $this->hasOne('Child');
}
public function AllChild(){
return $this->hasMany('Child');
}