获取递归Laravel关系中的最后一项

时间:2019-06-02 20:41:38

标签: php laravel

我的用户模型中有一个manager()关系,该关系是递归的,因此我可以找到用户的经理,经理的经理等等。最终将导致经理成为董事。

User
   Manager
     Their Manager
        Their Manager
           Director

我的问题是,如何提取导演?我已经尝试了user->manager->first()user->manager->latest()->first(),但似乎都没有返回期望的结果。

下面是我的User模型中的关系代码:

public function manager()
{
    return $this->belongsTo(__CLASS__, 'line_manager_id')->with('manager');
}

1 个答案:

答案 0 :(得分:1)

将此方法添加到用户模型中,然后调用$user->getDirector();

public function getDirector()
{
    if ($this->manager) {
      return $this->manager->getDirector();
    }

    return $this;
}