Gdzie idParent to id krotki nadrzędnej. Poziom jest poziomem zagłębienia w drzewie, a ścieżka kategorii to wszystkie kategorie nadrzędne.
Mam zaimplementowaną relację w modelu kategorie:
public function relations()
{
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array(
'podkategorie'=>array(self::HAS_MANY,'kategorie','idParent'),
);
}
W razie czego możesz też pokombinować z definicją relacji w modelu, popatrz na przykład poniżej (przypadek gdy w tabelce jest 2 graczy i oboje odwołują się do tej samej tabelki)
public function relations()
{
return array(
'games' => array(
self::HAS_MANY,
'Game',
'tournament_id',
'with'=>array(
'host.player'=>array('alias'=>'ah'),
'guest.player'=>array('alias'=>'ag')),
'together'=>true),
);
}
Powód dlaczego tak się działo. Masz dwie kolumny idParent, jedną pochodzącą z relacji podkategorie drugą z modelu kategoria. Pisząc warunek idParent = :idParent nie wskazujesz, o które idParent Ci chodzi. Zatem pisząc:
t.idParent wskazujesz, że chodzi Ci o tabelę kategorie;
podkategorie.idParent wskazujesz, że chodzi Ci o złączoną w relacji podkategorie tabelę kategorie.
Mój przykład dawał Ci taką sugestię, że jeśli masz w zapytaniu używaną tę samą tabelę co najmniej dwukrotnie, to musisz je rozróżnić poprzez alias (guest, host).