Laravel:创建关系以获取每个父实体的第一个子节点时出错

时间:2014-09-07 06:02:41

标签: laravel laravel-4 eloquent

我尝试急切加载每个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()方法时,它就可以了!

1 个答案:

答案 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');
}