[PHP] NestedSet move root

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • DeluxZ
  • Registratie: Augustus 2003
  • Laatst online: 09-09 09:10

DeluxZ

Livin' the good life

Topicstarter
Ik ben bezig met Symfony 1.4 om een klein CMS te schrijven voor mezelf en om meer kennis op te doen van Symfony.

Om het pagina beheer en menu structuur op te zetten gebruik ik een NestedSet van Doctrine. Op dit moment heb ik het volgens een tutorial gedaan die het voor Categoriën gebruikt.

Mijn database structuur ziet er als volgt uit (gegenereert door Doctrine) :

Afbeeldingslocatie: http://images.twidel.nl/symfony/db-nested-set.jpg
Deze tabel is gevuld met de volgende data:

Afbeeldingslocatie: http://images.twidel.nl/symfony/db-nested-set-data.jpg

Nu wil ik het volgende voor elkaar krijgen om bijvoorbeeld Category 1 MET Category 1-A onder/rechts van Category 6 wil verplaatsen. Dan zou het 'menu' er als volgt uit zien:

code:
1
2
3
4
5
6
7
8
9
- Category 2
  - Category 2-A
- Category 3
  - Category 3-A
- Category 4
- Category 5
- Category 6
- Category 1
  - Category 1-A


Ik heb op internet als zitten zoeken hoe ik een root kan verplaatsen in een NestedSet, maar krijg vrijwel alleen maar resultaten over hoe je een node kan verplaatsen.

Ik weet dat het ook met de 'adjancency method' kan. Zoals Crisp's blog: Formatting a multi-level menu using only one query. Ik wil het deze keer met de NestedSet methode voor elkaar krijgen, just for the experience ;)

Doctrine_Node_NestedSet Class voor de functies van de klasse die ik gebruik :)

[ Voor 5% gewijzigd door DeluxZ op 07-03-2011 16:52 ]

]|[ Apple Macbook Pro Retina 13" ]|[


Acties:
  • 0 Henk 'm!

  • _js_
  • Registratie: Oktober 2002
  • Laatst online: 18-08 21:31
In je tabel staan meerdere roots die niet via left/right met elkaar verbonden zijn, maar blijkbaar alleen op root_id Verplaatsen zal dus een kwestie zijn van het root_id aanpassen. Als de klasse meerdere roots ondersteunt dan zou je verwachten dat de functies voor het verplaatsen van nodes ook werken op roots (en zal die klasse dus de root_id aanpassen waar nodig).

Acties:
  • 0 Henk 'm!

  • DeluxZ
  • Registratie: Augustus 2003
  • Laatst online: 09-09 09:10

DeluxZ

Livin' the good life

Topicstarter
Dat zou je zeggen ja. Als ik van category 1 en category 1-a de 'root_id' van 1 naar 10 veranderd staan deze inderdaad onderaan. Als ik dan een nieuwe toevoeg via de backend (gegenereerd door Symfony) krijgt deze ook root_id 10. Als ik dit zou willen doen zou ik dus van category 1 en category 1-a de root_id naar 9 veranderen en alle andere moeten doorlopen om deze allemaal root_id - 1 uit te laten voeren.

Lijkt met niet echt handig met het oog op grote websites met veel pagina's. Ik zeg niet dat dit ook ooit gaat gebeuren maar toch ;)

]|[ Apple Macbook Pro Retina 13" ]|[