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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
catégorie : n - n : items
items : n - 1 : data
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.
Pour récupérer les items d'une catégorie j'effectue cette requête:

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();
Jusque là, pas de problème. J'arrive également à récupérer les data des items.
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 :

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
Si je demande la catégorie, les items et les data avec un where data = data3

Je souhaite obtenir :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
Categ1 -> item1 -> data3  
Categ1 -> item3 -> data3  
Categ2 -> item3 -> data3
Mais j'obtiens:
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
Dès qu'un catégorie est mapée avec des items, tous les items de la catégorie sont récupérés :/

Je ne sais pas trop comment m'en sortir.

Merci d'avance pour votre aide.