7

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'

これは明らかに 1 つのノードのみを選択し、そのすべての子を選択するわけではありません。

4

1 に答える 1

15

次のように2つのステップでそれを行う必要があるようです(マニュアルから):

$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' => 'my label'、呼び出しで条件を使用することはできません。に基づいて通常の検索操作の結果を再配置するだけなので、 /列を使用して、「子」が何であるかについて独自の条件を指定する必要があります。threaded'threaded'parent_idlftrght

于 2009-10-21T04:32:03.053 に答える