我目前正在使用CakePHP构建应用程序。有一个相当广泛的现有数据集,它在概念上是一棵树,但以前没有存储为一个。我的意思是,数据中没有定义真正的关系。
我遇到的问题是让它与CakePHP树行为一起正常工作。因为我必须在现有数据上设置所有值 - 而不是Cake在插入元素时设置结构 - 我需要了解lft / rght值的工作原理。
所以,我猜问题是:
结构数据如何工作,特别是lft / rght值?如何设置它以便合理地输出数据,而不是一次插入一个?它是一个2级树,包含章节和子部分。
感谢您的帮助
答案 0 :(得分:17)
MPTT树逻辑非常简单,并在Managing Hierarchical Data in MySQL中得到了很好的解释。总之,每个条目都有左值和右值。每个左/右值都在另一个条目左右范围内的条目是该(后一)元素的后代。例如。 LCD节点(5/6)在其父节点Televisions(2-9)的范围内。
(来源:mysql.com)
要为“新”树构建lft / rght值,只需正确设置所有parent_ids
并在其上运行$this->Model->recover()
即可。 Cake会为你计算lft / rght值。