在CakePHP中手动构建树

时间:2009-12-02 01:58:26

标签: php cakephp tree

我目前正在使用CakePHP构建应用程序。有一个相当广泛的现有数据集,它在概念上是一棵树,但以前没有存储为一个。我的意思是,数据中没有定义真正的关系。

我遇到的问题是让它与CakePHP树行为一起正常工作。因为我必须在现有数据上设置所有值 - 而不是Cake在插入元素时设置结构 - 我需要了解lft / rght值的工作原理。

所以,我猜问题是:

结构数据如何工作,特别是lft / rght值?如何设置它以便合理地输出数据,而不是一次插入一个?它是一个2级树,包含章节和子部分。

感谢您的帮助

1 个答案:

答案 0 :(得分:17)

MPTT树逻辑非常简单,并在Managing Hierarchical Data in MySQL中得到了很好的解释。总之,每个条目都有左值和右值。每个左/右值都在另一个条目左右范围内的条目是该(后一)元素的后代。例如。 LCD节点(5/6)在其父节点Televisions(2-9)的范围内。

alt text
(来源:mysql.com

要为“新”树构建lft / rght值,只需正确设置所有parent_ids并在其上运行$this->Model->recover()即可。 Cake会为你计算lft / rght值。