Рекурсивная функция для создания массива

0

Я использую kohana framework, и я пытаюсь создать рекурсивную функцию для создания дерева категорий.

Таблица моих категорий

id      int(11)     NO  PRI     NULL    auto_increment
name    varchar(50)     NO      NULL     
parent_id   int(11)     NO      NULL     
projects_count  int(11)     NO      NULL     

Мой пример, который не работает

public static function category_list($parent_id = 0)
{
    $result =  Database::instance()->query('
        SELECT name, projects_count 
        FROM project_categories
        WHERE parent_id = ?', 
        array($parent_id)
    );

    $project_categories = array();
    foreach($result as $row)
    {
        $project_categories[] = $row;

        Project_Categories_Model::factory()->category_list($parent_id + 1);
    }

    return $project_categories;
}
Теги:
recursion
tree

1 ответ

1
Лучший ответ

Использование такого рода реализации иерархических данных крайне неоптимально, потому что для получения каждой подкатегории вам нужен отдельный запрос к базе данных. Как здесь, вы хотите создать функцию рекурсии.

Если вы все еще можете изменить свою архитектуру таблицы, пожалуйста, проверьте Управление иерархическими данными в MySQL.

В этой статье описывается решение, как получить всю иерархию за один раз, поэтому рекурсивная функция не понадобится.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню