递归函数创建数组

发布于 2024-09-05 12:13:46 字数 773 浏览 3 评论 0原文

我使用 kohana 框架,我正在尝试编写递归函数来创建类别树。

我的类别表

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;
}

i use kohana framework and i am trying to code recursive function to create category tree.

My Categories Table

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     

My Example Which Is Not Work

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;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

暖风昔人 2024-09-12 12:13:46

使用这种分层数据实现是非常非优化的,因为要获取每个子类别,您需要对数据库进行单独的查询。就像这里你想创建递归函数。

如果您仍然可以更改表架构,请查看管理 MySQL 中的分层数据。

本文描述了一种解决方案,如何在一次查询中获取整个层次结构,因此不需要递归函数。

Using this kind of hierarchical data implementation is highly non-optimal, because to get every subcategory you need do a separate query to the database. Like here you want to create recursion function.

If you still can change your table architecture please check Managing Hierarchical Data in MySQL.

This article describes a solution, how to fetch the whole hierarchy in one time query, so the recursive function will not be necessary.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文