使用mother_id和father_id以递归方式从模型中获取父项

时间:2017-02-18 15:47:19

标签: laravel eloquent

我正在开发一个简单的Family Tree Laravel应用程序。由于我总是检索父母进行测试的方式,我现在遇到了问题。这带来了多个查询,显然效率非常低。

我使用的是一个简单的表,其中包含列:id,mother_id,father_id

我的关系设置如下:

public function mother()
{
    return $this->belongsTo('Person', mother_id');
}

public function father()
{
    return $this->belongsTo('Person', 'father_id');
}

现在我想以递归方式获得父母和父母的父母等等。我找到了与父母一方做到这一点的方法,但之后只会加载所有母亲或所有父亲。我目前仍然坚持如何正确地做到这一点,而没有为每组父母提供新的查询。

更新 如果没有找到合适的解决方案,我可能会使用数据透视表。我想保留所有当前条目。然后我以递归方式获取所有数据透视表项。以下方法是否适合处理它?然后我会继续根据性别属性确定母亲和父亲。

public function parents()
{
    return $this->hasMany(Person::class);
}

public function allParents()
{
    return $this->parents()->with('allParents');
}

//Person::find($id)->with('allParents');

0 个答案:

没有答案