我如何在自我关系中取得所有父母?

时间:2017-03-14 17:20:35

标签: laravel-5 eloquent

我有一张User表与自我关系。

该表的字段如下:

  • id
  • parent_id(FK到User
  • name

一个用户可以拥有一个父级,这个父级可以拥有一个父级,直到无限级(虽然我可能会达到3-4级,应用程序设置没有限制)。

如何从没有孩子的用户(树用户的底部)中获取除兄弟姐妹之外的所有家谱树。

例如: 我有user1,他的父母parent1有一个grandparent1。如果grandparent1有其他孩子(如所谓的parent2),我不想取这个。只需user1 - > parent1 - > grandparent1。有没有什么方法可以循环关联,直到它找不到?

EDIT1:我真的想使用QueryBuilder。使foreach调用parent()方法直到它返回null可能不是最佳解决方案,因为优化

1 个答案:

答案 0 :(得分:0)

试试这个:

class User extends Model {

    public function parent()
    {
        return $this->belongsTo('App\User', 'parent_id');
    }

    public function children()
    {
        return $this->hasMany('App\User', 'parent_id');
    }
}