Php Laravel雄辩地获得给定的嵌套级别

Php Laravel雄辩地获得给定的嵌套级别,php,sql,laravel-5,eloquent,Php,Sql,Laravel 5,Eloquent,我有一个多层次的用户模型,每个用户都可以有孩子和父母 public function children() { return $this->hasmany($this,'parent_id')->with('children'); } public function parent() { return $this->belongsTo($this,'parent_id')->with('parent'); } 然后是tinker: $User =

我有一个多层次的用户模型,每个用户都可以有孩子和父母

public function children() {

    return $this->hasmany($this,'parent_id')->with('children');
}

public function parent() {

    return $this->belongsTo($this,'parent_id')->with('parent');
}
然后是tinker:

$User = App\User::find(9)
$user->children
这将在多个级别上为我提供给定用户的所有子级(子级的CILD…):

我正试图通过上面的输出获得每个级别的子级:

1级将是用户:10、11 2级用户:12、13(儿童的子女)


有没有关于怎么做的提示

一个shema可以帮助您理解

您可以获得所有特定级别的项目

public function usersOnLevel($level)
{
    if ($level == 1) {
        return User::where('parent_id', null)->lists('id');
    } else {
        return User::whereIn('parent_id', $this->usersOnLevel($level - 1))->lists('id');
    }
}
这是我的桌子

这是输出


或者你还需要别的什么吗?

你也可以为特定的用户按级别获取子级

public function usersOnLevel($level, User $startUser)
{
    if ($level == 1) {
        return User::where('parent_id', $startUser->id)->lists('id')->toArray();
    } else {
        return User::whereIn('parent_id', $this->usersOnLevel($level - 1, $startUser))->lists('id')->toArray();
    }
}

输出

shema可以帮助您现在获得嵌套的子级,因此您可能应该重新表述问题。我获得的是all树,但我无法获得特定的叶节点,例如获取此答案中的第2层计数。此答案应删除