在 CakePHP 中,如何在 actsAs
树的模型中只选择一个子树?
我试过这个,找到以 label = "My Label"
$this->find("threaded", array(
"conditions" => array(
"label" => "My Label"
)
));
...但是查看日志,它运行此 SQL:
SELECT Menu.id, Menu.parent_id, Menu.lft, Menu.rght, Menu.label, Menu.link
FROM menus Menu
WHERE label = 'My Label'
这显然只选择了一个节点,而不是它的所有子节点。
最佳答案
看来您必须像这样分两步完成(来自 the manual ):
$parent = $this->Category->find('first', array(
'conditions' => array('label' => 'My label')
));
$parentAndChildren = $this->Category->find('threaded', array(
'conditions' => array(
'Category.lft >=' => $parent['Category']['lft'],
'Category.rght <=' => $parent['Category']['rght']
)
));
你不能在 threaded
调用中使用 'label' => 'my label'
条件,因为它只会找到匹配该条件的结果, parent 和 children 。 'threaded'
仅根据 parent_id
重新排列正常查找操作的结果,因此您必须通过使用lft
/right
列。
关于php - 在 CakePHP 树中查找子树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1598172/