递归函数创建数组
我使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用这种分层数据实现是非常非优化的,因为要获取每个子类别,您需要对数据库进行单独的查询。就像这里你想创建递归函数。
如果您仍然可以更改表架构,请查看管理 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.