@bysobi

Как построить древо категории на основании продуктов?

Мне нужно построить древо категории на основании продуктов в таблице.
Есть таблица с добавленными пользователем продуктами(wishlist_products)(wishlist_id, product_id)
Есть таблица с категориями, где у каждой категории есть родитель(parent_id). Главная категория(к которой подвязаны все остальные) имеет id = 0
Формат вывода категории имеет такой вид:
Array
(
    [category_id] => 3
    [parent_id] => 2
    [name] => Фэтбайки
)

У меня имеется массив со всеми id продуктов, добавленные пользователем - $product_ids
Я могу получить категории товаров(Не главные категории, а дочерние, к которой в данный момент привязан продукт) :
//например в таблице есть только один продукт, у которого категория Фэтбайки(id = 3)
$categories = $this->category->getCategoriesByProducts($product_ids);
В результате: 
[0] => 3 // категория Фэтбайки

Так же, я могу получить перечень категорий, которые идут выше(parent_id) Фэтбайки:
С помощью функции:
$this->category->getParentsCategories(3) // получаем категорию 3 и ее родителей в виде:
[0] => 1 // Спорт
[1] => 2 //Велосипеды
[2] => 3 //Фэтбайки


Мне нужно построить правильный массив вида:
Array
(
  [0] => Array ( // Главная категория дочерней категории.
                    [cat_id] => 1
                    [text] => Спорт 
                    [nodes] => Array ( //Тут Второй уровень категории
                               [0] => Array (
                                                  [cat_id] => 2
                                                  [text] => Велосипеды
                                                  [nodes] => Array (   //Тут Третий уровень категории
                                                            [0] => Array (
                                                                               [cat_id] => 3
                                                                               [text] => Фэтбайки
                                                                               [nodes] => 
                                                              )
                                                   )
                                 )
                       )
        )
)
  • Вопрос задан
  • 70 просмотров
Пригласить эксперта
Ответы на вопрос 1
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы