加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

在CakePHP树中查找子树

发布时间:2020-12-13 18:06:57 所属栏目:PHP教程 来源:网络整理
导读:在Cake PHP中,如何仅选择作为树的模型中的子树? 我试过这个,找到带有label =“My Label”的项目为首的树 $this-find("threaded",array( "conditions" = array( "label" = "My Label" ))); …但是看着日志,它会运行这个SQL: SELECT Menu.id,Menu.parent_id,
在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开始):
$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列提供你自己的“孩子”条件.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读