Я пытался решить эту проблему для себя, но я не могу найти решение, если бы кто-то мог мне помочь, я был бы очень благодарен.
Я создаю многоуровневое динамическое меню,
| id | parend_id | name | url |
| 1 | 0 | Level 1 | /level_one |
| 2 | 1 | Sublevel | /level_one/sublevel |
| 3 | 0 | Level 2 | /level_two |
Модель
в моей модели есть две рекурсивные функции, которые помогают мне генерировать дерево:
public function children() {
return $this->hasMany('App\Menus', 'parent_id', 'id');
}
public static function tree() {
return static::with(implode('.', array_fill(0, 100, 'children')))->where('parent_id', '=', '0')->get();
}
из контроллера Я просто создаю объект и вызываю функцию, и всеработает нормально, но я попытался решить, что когда у уровня больше нет дочерних элементов, он не показывает мой пустой массив, я не могу сделать это, если он не печатает его внутри объекта
$components = new Component;
try {
$menu = $components->tree();
} catch (Exception $e) {}
return response()->json($menu);
Я получаю это:
[
{
"id": 1,
"parent_id": 0,
"name": "Level 1",
"url": "/level_one",
"children": [
{
"id": 2,
"parent_id": 1,
"name": "Sublevel",
"url": "/level_one/suvlevel",
"children": []
},
]
},
{
"id": 3,
"parent_id": 0,
"name": "Level 2",
"url": "/level_two",
"children": []
}
]