Bonjour,
je viens vers vous car je n'ai rien trouvé sur le net qui puisse répondre à ma question.
Voici mon problème.
J'ai une table category qui est un nested set.
De ce fait une catégorie peut contenir plusieurs enfants ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Category: actAs: NestedSet: hasManyRoots: true rootColumnName: root_id columns: name: type: string() relations: Item: local: id foreign: category_id type: one
J'ai également une table item qui peuvent être contenus par une catégorie.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Item: columns: name: type: string() category_id: type: integer relations: Category: local: category_id foreign: id type: one
En utilisant (intensément) le manuel de doctrine j'ai réussi à créer mes tables dans la base et à les charger avec des données de fixtures. Tout marche très bien.
Ensuite je voudrais afficher mon arborescence de catégorie avec les items associés aux catégories.
Exemple:
Voici le code que j'ai utilisé:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Categorie 1 - Item1 - Catégorie 2 - Item2 - Item3 - Catégorie 3 - Item4
Ceci devrait automatiquement me fournir un tableau hiérarchisé avec mes catégories et mes items. Or mon problème et que si une catégorie possèdent plusieurs items, seul le premier est stocké dans le tableau.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 //récupère toute la table categorie avec les item associés $q = Doctrine_Query::create() ->select('c.name, i.name') ->from('Category c') ->leftJoin('c.Item i') ->setHydrationMode(Doctrine_Core::HYDRATE_ARRAY); $treeObject = Doctrine_Core::getTable('Category')->getTree(); $treeObject->setBaseQuery($q); $tree = $treeObject->fetchTree(); $treeObject->resetBaseQuery(); print_r($tree);
J'ai vérifié la requête qui est effectué par doctrine et elle me rend toutes les catégories et tous les items associés.
Est ce que la méthode fetchTree ne prend que le premier élément?
Bref, je suis perdu et je n'ai plus beaucoup de cheveux
Merci d'avance.
Partager