30
Май
2016

Создание дерева категорий

Кому-то покажется, что задача обсосанная, но я так вменяемого решения и не нашел, поэтому помогите пожалуйста, чем можете :-)

Итак, есть стандартная таблица category(id, title, parent_id). Parent_id это внешний ключ ссылающийся на id родителя этой же таблицы.

Вытаскиваю с базы все категории одним запросом:

$categories = Category::find()->asArray()->all();

Массив $categories получается вида:

[
    ['id'=>0, 'title'=>'Электроника', 'parent_id' => null],
    ['id'=>1, 'title'=>'Компьютеры', 'parent_id' => 0],
    ['id'=>2, 'title'=>'ПК', 'parent_id' => 1],
    ['id'=>3, 'title'=>'Ноутбуки', 'parent_id' => 1],

    ['id'=>4, 'title'=>'Мобильные телефоны', 'parent_id' => 0],


    ['id'=>5, 'title'=>'Бытовая химия', 'parent_id' => null],
    ['id'=>6, 'title'=>'Порошок', 'parent_id' => 5],
    ['id'=>7, 'title'=>'Мыло', 'parent_id' => 5],
]

и т.д., категории бесконечной (неизвестной) вложенности.

Необходимо из этого массива сделать др. многомерный массив-дерево, в котором дочерние категории вложены в родительские (для последующего древовидного вывода в представлениях). Как это сделать? Какие есть варианты? Спасибо.

Источник: https://ru.stackoverflow.com/questions/528693/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5-%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%B0-%D0%BA%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D0%B9

30
Май
2016

Создание дерева категорий

Кому-то покажется, что задача обсосанная, но я так вменяемого решения и не нашел, поэтому помогите пожалуйста, чем можете :-)

Итак, есть стандартная таблица category(id, title, parent_id). Parent_id это внешний ключ ссылающийся на id родителя этой же таблицы.

Вытаскиваю с базы все категории одним запросом:

$categories = Category::find()->asArray()->all();

Массив $categories получается вида:

[
    ['id'=>0, 'title'=>'Электроника', 'parent_id' => null],
    ['id'=>1, 'title'=>'Компьютеры', 'parent_id' => 0],
    ['id'=>2, 'title'=>'ПК', 'parent_id' => 1],
    ['id'=>3, 'title'=>'Ноутбуки', 'parent_id' => 1],

    ['id'=>4, 'title'=>'Мобильные телефоны', 'parent_id' => 0],


    ['id'=>5, 'title'=>'Бытовая химия', 'parent_id' => null],
    ['id'=>6, 'title'=>'Порошок', 'parent_id' => 5],
    ['id'=>7, 'title'=>'Мыло', 'parent_id' => 5],
]

и т.д., категории бесконечной (неизвестной) вложенности.

Необходимо из этого массива сделать др. многомерный массив-дерево, в котором дочерние категории вложены в родительские (для последующего древовидного вывода в представлениях). Как это сделать? Какие есть варианты? Спасибо.

Источник: https://ru.stackoverflow.com/questions/528693/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5-%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%B0-%D0%BA%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D0%B9

Share

Тебе может это понравится...