Hallo, ich habe ein Problem.
Ich habe in einer Datenbank einen kategorie-Baum.
Ich möchte in einer zusätzlichen Tabelle festhalten welche Kategorie welche parents hat, dies aber durchgehend, sprich: habe ich eine Kategorie auf Level 5, dann hat diese 4 parents(parent auf level 4, level 3, level 2 und level 1)
Der Sinn und Zweck ist dafür: Wenn ich wissen möchte welche Kinder eine Kategorie hat, möchte ich dies mit einem Select machen ohne die Hierarchie durchgehen zu müssen.
Ich hole also zuerst eine Liste aller kategorien, mit einem left join auf die gleiche Tabelle um den parent zu holen.
Als ergebnis habe ich eine Liste:
KategorieId, KategorieLevel, ParentId, ParentLevel
Daraus mache ich zuerst einen Tree um eine genaue übersicht zu bekommen wer zu wem gehört.
Und mein Problem ist: Wie könnte ich aus dem dem Baum wieder eine Liste machen, in der Form:
Ich habe in einer Datenbank einen kategorie-Baum.
Ich möchte in einer zusätzlichen Tabelle festhalten welche Kategorie welche parents hat, dies aber durchgehend, sprich: habe ich eine Kategorie auf Level 5, dann hat diese 4 parents(parent auf level 4, level 3, level 2 und level 1)
Der Sinn und Zweck ist dafür: Wenn ich wissen möchte welche Kinder eine Kategorie hat, möchte ich dies mit einem Select machen ohne die Hierarchie durchgehen zu müssen.
Ich hole also zuerst eine Liste aller kategorien, mit einem left join auf die gleiche Tabelle um den parent zu holen.
Als ergebnis habe ich eine Liste:
KategorieId, KategorieLevel, ParentId, ParentLevel
Daraus mache ich zuerst einen Tree um eine genaue übersicht zu bekommen wer zu wem gehört.
Code:
array( 1 => array ( 'id' => 1, 'level => 1, 'children' => array( 11 => array( 'id' => 11, 'level' => 2, 'children' => array() ), 12 => array( 'id' => 12, 'level' => 2, 'children' => array( 121 => array( 'id' => 121, 'level' => 3, 'children' => array() ) ) ) ) ), 2 => array ( 'id' => 2, 'level => 1, 'children' => array( 21 => array( 'id' => 21, 'level' => 2, 'children' => array() ) ) ) )
Code:
array( array( 'id' => 121, 'level' => 3, 'parentId' => 12, 'parentLevel' => 2 ), array( 'id' => 121, 'level' => 3, 'parentId' => 1, 'parentLevel' => 1 ), array( 'id' => 12, 'level' => 2, 'parentId' => 1, 'parentLevel' => 1 ), array( 'id' => 11, 'level' => 2, 'parentId' => 1, 'parentLevel' => 1 ), array( 'id' => 21, 'level' => 2, 'parentId' => 2, 'parentLevel' => 1 ) )
Kommentar