Doctrine PHP ORM NESSIDET
-
19-09-2019 - |
Question
Bien que j'ai lu le manuel ici:http://www.doctrine-project.org/documentation/manual/1_2/hu/hierarchical-dataJe n'ai pas pu trouver un moyen de déplacer un nœud d'une feuille pour devenir un nœud racine. Des indices? La question est triviale pour insérer un nouveau nœud ... mais qu'en est-il de la mise à jour d'un nœud?
La solution
Utilisation Doctrine_node_nestset :: makeroot () ainsi:
$item->getNode()->makeRoot($maxRootValue + 1);
Vous devez passer de nouveaux root_id
la valeur et l'un des moyens le plus simples pour le faire est de sélectionner MAX(root_id)
de la table et incrément sa valeur.
Autres conseils
Comme dit Crozin, utilisez Doctrine_Node_NestedSet::makeRoot()
, mais en utilisant l'ID de l'élément au lieu de calculer la valeur maximale du root_id
.
Le root_id est l'ID du nœud racine
$item->getNode()->makeRoot($item->id);
N'est pas nécessaire pour calculer la valeur de root_id
. Utiliser l'ID de l'article ne crée aucun conflit et c'est la façon dont la doctrine l'a géré en interne.