Laravel:创建关系以获取每个父实体的第一个子实体时出错
我试图快速加载每个Laravel:创建关系以获取每个父实体的第一个子实体时出错,laravel,laravel-4,eloquent,Laravel,Laravel 4,Eloquent,我试图快速加载每个父实体的第一个子实体如下: $list = Parent::with('FirstChild')->get(); 而Parent模型中定义的关系是: public function FirstChild() { return $this->hasMany('Child')->first(); } 但这带来了一个错误: BadMethodCallException thrown with message "Call to undefined meth
父实体的第一个子实体如下:
$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()
用于声明与模型(自身或其他)的关系。在这里,您声明了与“Child”的关系,因此当您删除first()
时,它会起作用
所以这应该很好
$list = Parent::with('FirstChild')->first();
编辑
第一个孩子可以使用hasOne(),第三个孩子可以使用hasMany()
public function FirstChild()
{
return $this->hasOne('Child');
}
public function AllChild(){
return $this->hasMany('Child');
}
在FirstChild()中,您正在声明与Child的关系。所以first()在这里不起作用。如果我错了,请纠正我您的查询会影响父表的返回记录(只返回第一个记录)。我想要父母的名单以及每个人的第一个孩子。然后在FirstChild方法中使用hasOne()可以解决这个问题,另外用hasMany()做另一个方法谢谢,你的评论很有帮助。请更新你的答案。