CakePHP树行为,每个表多个树

时间:2011-10-06 17:24:23

标签: cakephp tree behavior cakephp-1.2

我遇到了一个相当复杂的问题,我需要树的行为来帮助。

我有一个名为nodes的表,这个表已经有了一个树,这个树用于构建一个菜单。

现在我们希望创建多个菜单,以便创建node_menusmenus表。所以Nodes hasAndBelongsToMany Menus

但是有一个小问题,菜单已构建但使用$this->Node->find('threaded'),因此可以使用子菜单。所有节点都可以在多个菜单中使用,所有菜单都需要树,因此可以订购节点,也可以创建子菜单。

为此,我考虑为每个菜单创建一个包含树的表,并将节点链接到树表中的每一行。

所以基本上我需要一个trees表,其关系为Trees belongsTo Nodes。在此树中,我有字段menu_idnode_idparent_idlftrght

现在的问题是,一个表中可能有多个树吗?说,我想要menu_id为15的树。是否可以将find('threaded')与所述ID一起使用,该ID将返回与node_id相关的所有数据和节点。包括创建和操作树的所有其他核心功能。

这可能吗?如果没有,有没有人有更好的解决方案如何制作多个菜单,其中节点可以放在多个菜单中,可以订购和线程?

1 个答案:

答案 0 :(得分: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