在Cake
PHP中,如何仅选择作为树的模型中的子树?
我试过这个,找到带有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开始):
原文链接:https://www.f2er.com/php/134611.html$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'] ) ));
你不能使用’label’=>线程调用中的“我的标签”条件,因为它只会找到符合该条件的结果,父母和子女. ‘threaded’只根据parent_id重新排列正常查找操作的结果,因此你必须使用lft / rght列提供你自己的“孩子”条件.