我想从Laravel 7中的MySQL表中获取嵌套的类别数据。
这是MySQL表:
------------------------
|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
(在控制器中)我的当前代码为:
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
如您所见,它不会遍历B和C。非常感谢您的帮助。
答案 0 :(得分:1)
您在foreach循环中有一个return语句。
这将导致仅处理category_id
的第一个值,而不处理其他值的情况。
您不应直接返回,而应将返回值存储在例如数组中,然后在循环之后返回。