Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Всем привет. Laravel 8
$table->increments('id');
$table->integer('menu_id')->unsigned()->nullable()->index();
$table->string('name');
$table->foreign('menu_id')->references('id')->on('menus');
Menu.php
public function menu()
{
return $this->hasMany(Menu::class);
}
public function childrenMenu()
{
return $this->hasMany(Menu::class)->with('menu');
}
MenuController.php
public function index()
{
$menus = [];$submenu=[];
$menus = Menu::whereNull('menu_id')
->with('childrenMenu')
->get();
foreach ($menus as $menu){
$submenu[]=$menu->childrenMenu;
}
return response()->json(array('menu'=>$menus,'submenu'=>$submenu));
}
Возвращает только до второго уровня вложенности. Третьего нет в массиве. Что не так?
Не в сети
1. Не так у тебя с именами. Ты зачем-то избегаешь общепринятого термина parent_id, у тебя это menu_id. Как следствие, странный нейминг переполз в название методов. И стало ничерта непонятно где что.
2. Ты не обозначил желаемый формат данных на выходе. В идеале надо показать пример исходных данных - в таблице. И как должен выглядеть результат - например в формате выдачи var_export()
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
Когда я использовал parent_id, запрос пытался найти menu_id и выдавал ошибку
Не в сети
Когда я использовал parent_id, запрос пытался найти menu_id и выдавал ошибку
Я находил готовые примеры в инете , где пишут неограниченный уровень вложенности. Делал так как описано в примерах , но была та же проблема , 3 уровня . Как то так.
Изменено DzonyBB (18.12.2022 13:03:07)
Не в сети
Страницы 1