Мне нужно построить древо категории на основании продуктов в таблице.
Есть таблица с добавленными пользователем продуктами(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] =>
)
)
)
)
)
)