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层计数。此答案应删除