2014-03-05 25 views
0

發現一對夫婦使用 'ORM_Tree' 來處理一個自我指涉的錶鏈接提示:的Kohana - ORM_Tree

然而,您可以通過控制器的錯誤說找不到'類ORM_Tree'。 我的模型如下:

class Model_Article extends ORM_Tree { 
    protected $children = "categories"; 
} 

我使用的版本3.3.1與控制器如下:

class Controller_Category extends Controller{ 

    //View 
    public function action_index(){ 
     $categories = ORM::factory('Category')->find_all(); 
     $view = new View('category/index'); 
     $view->set('category', $categories); 
     $this->response->body($view); 
    } 
} 

是類從3.3.1版本中刪除? 如果是這樣,沒有任何人有處理自引用表的建議如下圖所示:

CATEGORY_ID - INT(11) - 不
CATEGORY_NAME - VARCHAR(45) - 不
category_description - VARCHAR(250 ) - 是 - NULL
__parent_id - INT(11) - 是 - NULL

希望,我得到了表足夠清晰的瞭解。 __parent_id與category_id具有外鍵關係。 __parent_id可以爲空(以允許根或甚至幾個頂級)。

任何建議將不勝感激,因爲我非常希望在項目中利用樹。請原諒,如果這已被回答其他地方(請理解,我沒有問,直到我'谷歌搜索',甚至'雅虎')。

我對Kahona非常陌生,因爲這個框架似乎是最合適的。我曾經檢查過Cakephp,但不關心他們對AuthAcl的處理 - 似乎有點令人費解,因爲你有一棵左右節點的「樹」,我覺得這個節點不必要的複雜。然而,我還沒有得到Kahona的AuthAcl,可能會發現這樣的實現是必要的。

+0

他們有一個kohana標籤,我剛添加它。您可以嘗試查看該課程源代碼的較舊版本。 – quickshiftin

回答

0

不需要這樣的構造,因爲您可以輕鬆設計自引用的ORM類。我不確定你想要什麼,因爲該課程名爲Model_Article,但該表有category_*列。

所以我會假設你有一個表categories與給定的列。現在,這個模型看起來是這樣的

class Model_Category extends ORM { 
    protected $_table_name = "categories", 
     $_has_many = array(
      'children' => array(
       'model' => 'Category', 
       'far_key' => '__parent_id' 
      ) 
     ), 
     $_has_one = array(
      'parent' => array(
       'model' => 'Category', 
       'foreign_key' => '__parent_id' 
      ) 
     ); 
} 

這不是測試,但至少應該給你的執行理念。您可以隨時閱讀documentationAPI browser關於如何使用的內容。如果您感覺不滿意,我還會建議您使用各種設置來玩一下。

如果您想知道是使用far_key還是foreign_keythis answer應該有所幫助。

+0

這看起來很有希望,我肯定會給你一個機會,然後回覆你。這是我在這個網站上的第一篇文章,很難在20分鐘內得到兩個回覆。 –

+0

不客氣!我目前沒有正在運行的Kohana環境,所以如果它在第一次嘗試時無法運行,請嘗試更改'foreign_key' /'far_key'和'__parent_id' /'category_id' – kero