CakePHP Ağacında bir alt ağacı bulma

1 Cevap php

CakePHP, nasıl bir modelin actsAs ağaç sadece bir altağaç seçerim?

Ben öğenin başkanlığında ağacı bulmak için, bu çalıştı label = "My Label"

$this->find("threaded", array(
    "conditions" => array(
        "label" => "My Label"
    )
));

... Ancak günlükleri bakarak, bu SQL çalışır:

SELECT Menu.id, Menu.parent_id, Menu.lft, Menu.rght, Menu.label, Menu.link
FROM menus Menu
WHERE label = 'My Label'

Hangi tabii ki sadece tüm çocukların bir düğüm seçer, değil.

1 Cevap

Bu böyle iki adımda bunu yapmak zorunda olacak gibi görünüyor (dan 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']
    )
));

Yalnızca bu durum, anne ve çocukları maç sonuçları bulur beri, threaded çağrısında 'label' => 'my label' koşulunu kullanamazsınız. 'threaded' sadece parent_id dayalı normal bir buluntu operasyonun sonuçlarını yeniden düzenler, böylece {[(4 kullanılarak "çocuk" ne kendi durumunu sağlamak gerekecek )]} / rght sütunlar.