Bonjour, Bonsoir, j'aurais besoin d'aide pour un problème d'utilisation de Doctrine.

Si je prends par exemple 3 tables :
Case 1-n _ 1-1 Personne 1-n _ n-1 Mission
1 case peut contenir plusieurs personnes
1 personne ne peut être que sur une case
et une relation bi-directionnelle entre Personne et Mission avec plusieurs personnes concernées par une même mission et plusieurs missions pour une même personne.

Si je veux afficher pour une case donnée, toutes les personnes présentes et à côté de chaque personne les missions qui la concerne c'est facile je fais :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
$q = Doctrine_Query::create()
	->select('c.*, p.*, m.*')
	->from('Case c')
	->leftJoin('c.Personnes p')
	->leftJoin('p.Missions m')
	->where('c.id = 1');
$results = $q->execute(array(), Doctrine_Core::HYDRATE_ARRAY);
et j'obtiens quelque chose comme ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
Case
  Personnes => array(
    0 => Personne
              nom
              Missions => array(
                0 => Mission
                          nom
                          objectif
                1 => ...
              )
    1 => ...
  )
Et l'affichage se fait sans problème.

Mais si je veux afficher pour une case donnée, toutes les missions et à côté de chaque mission les personnes qui sont concernées par la mission je n'ai pas trouvé de moyen simple pour obtenir un tableau de résultat qui ressemblerait à ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
Case
  Missions => array(
    0 => Mission
              nom
              objectif
              Personnes => array(
                0 => Personne
                          nom
                1 => ...
              )
    1 => ...
  )
- dois-je créer une relation directe entre Case et Mission avec une nouvelle table de relation, ce qui serait un peu redondant au niveau des données ?
- dois-je faire une autre requête du genre
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
$q = Doctrine_Query::create()
	->select('c.*, p.*, m.*, pp.*')
	->from('Case c')
	->leftJoin('c.Personnes p')
	->leftJoin('p.Missions m')
	->leftJoin('m.Personnes pp')
	->where('c.id = 1');
$results = $q->execute(array(), Doctrine_Core::HYDRATE_ARRAY);
afin d'obtenir quelque comme ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Case
  Personnes => array(
    0 => Personne
              nom
              Missions => array(
                0 => Mission
                          nom
                          objectif
                          Personnes => array(
                            0 => Personne
                                      nom
                            1 => ...
                          )
                1 => ...
              )
    1 => ...
  )
et ensuite parcourir toutes les Missions pour créer moi-même Case["Missions"] dans le tableau de résultat ?

Est-ce que Doctrine est fait pour ça ?
En gros, quel est le moyen le plus simple ?

Merci.