2010-06-14 139 views
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; 
} 

回答

1

使用這種分層數據執行的是高度非最佳,因爲讓每一個子目錄,你需要做一個單獨的查詢數據庫。像這裏一樣你想創建遞歸函數。

如果您仍然可以更改您的表架構,請檢查Managing Hierarchical Data in MySQL

本文介紹了一種解決方案,即如何在一次查詢中獲取整個層次結構,因此遞歸函數將不是必需的。