Bonjour à tous !
J'ai cherché sur le net et me suis arraché quelques cheveux mais sans trouver de solution :/
Donc je viens vers vous ^^
Voici mon problème :
J'ai une table catégorie, une table item et une table data.
Les relations entre les table sont les suivantes :
On est en présence d'une relation many to many et d'une one to many. Entre les n-n il y a une table de mapping crée par Doctrine.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2catégorie : n - n : items items : n - 1 : data
Pour récupérer les items d'une catégorie j'effectue cette requête:
Jusque là, pas de problème. J'arrive également à récupérer les data des items.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 $query = Doctrine_Query::create() ->select('c.name,i.name') ->from('Categorie c') ->leftJoin('c.MappingItem i') ->setHydrationMode(Doctrine_Core::HYDRATE_ARRAY); $data = $query->execute();
Je peux également récupérer la catégorie, les items associés et les data associés aux items.
Mon problèmes intervient lorsqu'une catégorie pointe vers plusieurs items et que les items pointent vers plusieurs data.
Dans ce cas là, Doctrine est perdu et me sort tous les enregistrements de la base.
Ce, même si je filtre avec un where.
Exemple :
Si je demande la catégorie, les items et les data avec un where data = data3
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Catégorie1 est mapée avec item1, item2 et item3 Catégorie2 est mapée avec item2 et item3 data1 et data3 pointent vers Item1 data2 et data3 pointent vers Item3
Je souhaite obtenir :
Mais j'obtiens:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Categ1 -> item1 -> data3 Categ1 -> item3 -> data3 Categ2 -> item3 -> data3
Dès qu'un catégorie est mapée avec des items, tous les items de la catégorie sont récupérés :/
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Categ1 -> item1 -> data3 Categ1 -> item2 -> data3 <- erreur Categ1 -> item3 -> data3 Categ2 -> item2 -> data3 <- erreur Categ2 -> item3 -> data3
Je ne sais pas trop comment m'en sortir.
Merci d'avance pour votre aide.
Partager