@SM_ST

Как указать уровень вывода вложенности?

как указать уровень вывода вложенности меню, например нужно вывести меню 3-х уровней:

Категория
    Подкатегория
        Подкатегория


$query = DB::table('categories as c')
            ->leftJoin('category_descriptions as cd','cd.category_id','=','c.id')
            ->select('c.*','cd.name','cd.slug')
            ->where('cd.language_id','=', 1)->get()->toArray();

        $category_list = array();
        foreach ($query as $category) {
            $category_list[$category->id] = (array)$category;
        }

        return $this->getTreeCategories($category_list,4);

    public function getTreeCategories($dataset, $level){
        $tree = array();

        foreach ($dataset as $id => &$node) {
            //Если нет вложений
            if (!$node['parent']){
                $tree[$id] = &$node;
            }else{
                //Если есть потомки то перебераем массив
                $dataset[$node['parent']]['childrens'][$id] = &$node;
            }
        }
        return $tree;
    }
  • Вопрос задан
  • 50 просмотров
Пригласить эксперта
Ответы на вопрос 1
SilenceOfWinter
@SilenceOfWinter
та еще зажигалка...
подобные вложенные данные обычно хранятся в таблицах с доп.полями как раз для этого, гугли "nested sets"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
RecruitIT Москва
от 100 000 до 160 000 ₽
Сбер Москва
До 240 000 ₽
RecruitIT Москва
от 120 000 до 150 000 ₽
21 окт. 2020, в 22:40
300 руб./за проект
21 окт. 2020, в 22:34
25000 руб./за проект
21 окт. 2020, в 21:24
7000 руб./за проект