Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel:创建关系以获取每个父实体的第一个子实体时出错_Laravel_Laravel 4_Eloquent - Fatal编程技术网

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()做另一个方法谢谢,你的评论很有帮助。请更新你的答案。