CakePHP树行为 - 查找特定级别元素

时间:2014-02-09 20:42:54

标签: sql cakephp nested-sets cakephp-2.4

我只是想知道如何使用TreeBehavior从模型中获取特定的级别元素。

这对于第一级元素来说非常简单..只需找到带有parent_id => null的元素,但是对于更深层次的元素......?

有没有干净简单的方法呢?

1 个答案:

答案 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/对如何使用树木有很好的解释,但它是用德语写的,你可以尝试通过谷歌翻译进行翻译。