我只是想知道如何使用TreeBehavior从模型中获取特定的级别元素。
这对于第一级元素来说非常简单..只需找到带有parent_id => null的元素,但是对于更深层次的元素......?
有没有干净简单的方法呢?
答案 0 :(得分:1)
这可以在纯SQL中完成。您甚至可以获得每个节点的后代计数。
SELECT n.name,
COUNT(*)-1 AS level,
ROUND ((n.rgt - n.lft - 1) / 2) AS offspring
FROM tree AS n,
tree AS p
WHERE n.lft BETWEEN p.lft AND p.rgt
GROUP BY n.lft
ORDER BY n.lft;
如果您在HAVING level = 2
语句后添加GROUP
,则可能只获得您正在寻找的级别。老实说,我一直懒得去测试它,把它变成一个CakePHP find()数组,试一试。
本网站http://www.klempert.de/nested_sets/对如何使用树木有很好的解释,但它是用德语写的,你可以尝试通过谷歌翻译进行翻译。