Php 用于获取具有父子关系的嵌套项的递归函数
我想从Laravel7中的MySQL表中获取嵌套类别数据 这是MySQL表:Php 用于获取具有父子关系的嵌套项的递归函数,php,mysql,laravel,recursion,laravel-7,Php,Mysql,Laravel,Recursion,Laravel 7,我想从Laravel7中的MySQL表中获取嵌套类别数据 这是MySQL表: ------------------------ |id | name | parent_id | |---|------|-----------| | 1 | A | NULL | |---|------|-----------| | 2 | B | NULL | |---|------|-----------| | 3 | C | NULL | |---|------
------------------------
|id | name | parent_id |
|---|------|-----------|
| 1 | A | NULL |
|---|------|-----------|
| 2 | B | NULL |
|---|------|-----------|
| 3 | C | NULL |
|---|------|-----------|
| 4 | a | 1 |
|---|------|-----------|
| 5 | ab | 4 |
|---|------|-----------|
| 6 | bc | 4 |
|---|------|-----------|
| 7 | ca | 4 |
|---|------|-----------|
| 8 | b | 2 |
|---|------|-----------|
| 9 | 2b | 8 |
|---|------|-----------|
|10 | 3b | 8 |
|---|------|-----------|
|11 | c | 3 |
|---|------|-----------|
我想要以下输出:
A
a
ab
bc
ca
B
b
2b
3b
C
c
我的当前代码(在控制器中)是:
如您所见,它不会遍历B和C。非常感谢您的帮助。您在foreach循环中有一个return语句 这会导致这样一种情况,即只处理第一个具有
category\u id
的值,而不处理其他值
您不应直接返回,但应将返回值存储在数组中,例如,并在循环后返回。您能解释一下您的输出吗?我希望所有子项都显示在其父项之后。如您所见,
ab
,bc
和ca
是a
的子代。因此,它们出现在a
之后。而a
也是a
的孩子。所以a
出现在a
之后。谢谢!不成熟的返回
确实是一个问题。
public function sort_category($data, $opt){
$contents = Category::where('category_id', $data)->get();
foreach($contents as $c){
$opt .= "<option value='".$c->id."'>".$c->name."</option>";
$count = Category::where('category_id', $c->id)->count();
if($count > 0){
return $this->sort_category($c->id, $opt);
}
}
return $opt;
}
public function add_category_form(){
$opt = '';
$html = $this->sort_category(NULL, $opt);
return view('admin.add_category', ['categories' => $html]);
}
A
a
ab
bc
ca