@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;
    }
  • Вопрос задан
  • 59 просмотров
Пригласить эксперта
Ответы на вопрос 1
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
подобные вложенные данные обычно хранятся в таблицах с доп.полями как раз для этого, гугли "nested sets"
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы