2011-08-12 64 views
0

我想要寫的Joomla遞歸函數,得到使用類別ID使用Joomla的jmodel的分貝object.Following所有的子級,一類是我的代碼,我已經寫了:遞歸函數使用Joomla db對象

function getChildCategories($type){ 
      $query = "SELECT id FROM #__cd_categories WHERE parent_id='$type'"; 
      echo $query."<br/>"; 
      $this->_db->setQuery($query); 
      $list = $this->_db->loadObjectList(); 
      if ($this->_db->getErrorNum()) { echo $this->_db->stderr(); return false; }  
      foreach($list as $record){ 
       $this->childCategories[]= $record->id; 
       echo $record->id."<br/>"; 
       return $this->getChildCategories($record->id); 
      } 

     return true;    
    } 

所以現在的問題是,在joomla中我們使用$ this - > _ db_setQuery方法和$ this - > _ db-> loadObjectList方法,所以在遞歸調用結果集時,我認爲它覆蓋了,我想因爲對象是一樣的。那麼,任何人都能說出如何解決這個問題嗎?如果你可以通過使用循環來解決這個問題,即使這對我也是很有幫助的。

我也認爲,一旦值被分配給$ list變量,那寫過就不應該是問題。所以看起來很奇怪。請告訴我是否有人能告訴我怎麼做?

在此先感謝

回答

1

我不認爲這個問題是與數據庫對象覆蓋掉了。自從我一直在使用遞歸函數掙扎之後,我覺得問題在於分配$ list變量。

如果你無法回到這個變量,而不是邏輯真這樣的:

function getChildCategories($type) { 
     $query = "SELECT id FROM #__cd_categories WHERE parent_id='$type'"; 

     $this->_db->setQuery($query); 
     $list = $this->_db->loadObjectList(); 
     if ($this->_db->getErrorNum()) { echo $this->_db->stderr(); return false; } 
     if ($list) { 
      foreach($list as $record){ 
       $list->childCategories = $this->getChildCategories($record->id); 
      } 
      return $list; 
     } else { 
      return; 
     } 

} 
+0

回報可以是任何東西,在這種情況下,我節省對象的屬性值,我不需要任何返回值是childCategories數組,哪裏有$ list分配的問題? – Hafiz

+1

對不起 - 我更新了我的評論 - 看看 –

+0

是的,但你更新的代碼不再是一個遞歸函數? – Hafiz