Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 27.10.2022 17:14:57

Проблемма с вложенностью

Всем привет. 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));  
    }

Возвращает только до второго уровня вложенности. Третьего нет в массиве. Что не так?

Не в сети

#2 27.10.2022 20:57:19

Re: Проблемма с вложенностью

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.

Не в сети

#3 28.10.2022 07:39:48

Re: Проблемма с вложенностью

Когда я использовал parent_id, запрос пытался найти menu_id и выдавал ошибку

Не в сети

#4 18.12.2022 13:02:36

Re: Проблемма с вложенностью

Когда я использовал parent_id, запрос пытался найти menu_id и выдавал ошибку

Я находил готовые примеры в инете , где пишут неограниченный уровень вложенности. Делал так как описано в примерах , но была та же проблема , 3 уровня . Как то так.

Изменено DzonyBB (18.12.2022 13:03:07)

Не в сети

Подвал раздела