2011-10-06 95 views
3

我遇到了一個相當複雜的問題,我需要樹的行爲來幫助。CakePHP樹行爲,每個表多棵樹

我有一張名爲nodes的表,該表已經有一棵樹,這棵樹用來構建一個菜單。

現在我們想讓創建多個菜單成爲可能,所以我製作了node_menusmenus表格。所以Nodes hasAndBelongsToMany Menus

但是有一個小問題,菜單是建立,但使用$this->Node->find('threaded')所以子菜單是可能的。所有節點都可以在多個菜單中使用,並且所有菜單都需要一棵樹,因此可以對節點進行排序,並且也可以創建子菜單。

爲此,我正在考慮爲每個菜單創建一個包含樹的表並將節點鏈接到樹表中的每一行。

所以基本上我需要trees表與Trees belongsTo Nodes關係。在這棵樹中我有menu_id,node_id,parent_id,lftrght

現在的問題是,多個樹可能在一個表中?說,我想menu_id是15樹。有可能使用find('threaded')與所述ID將返回所有的數據和節點相關的node_id的。包括創建和操作樹的所有其他核心功能。

這可能嗎?如果沒有,有沒有人有更好的解決方案,如何製作多個菜單,其中節點可以放置在多個菜單中,並可以進行排序和線程化?

回答

1

想想下面,然後你可以用一棵樹來做。

root[hidden node] 
---- Menu 1 
-------- Item 1.1 
-------- Item 1.2 
-------- Item 1.3 
---- Menu 2 
-------- Sub Menu 2.1 
------------ Item 2.1.1 
-------- Item 2.1 
---- Menu 3 
---- Menu 4 
---- Menu 5 

我做了一個CakePHP的菜單生成器插件,如果你喜歡:) https://github.com/torifat/cake-menu_builder

+0

這可能會實現,你可以用它!我不知道爲什麼我總是覺得更復雜,然後我必須。所以我可以在菜單表中做到這一點,將節點與菜單項相關聯,並通過查找孩子來檢索樹。這也會使管理變得更容易。我會試一試! –