Bonjour.

Je développe actuellement une application sous Symfony 2.3.1 et je rencontre un problème.

J'ai deux entités, "Jeu" et "Hardware", reliées en ManyToMany. J'ai également une page me listant mes entités "Jeu" à l'aide d'un filtre.

Le problème est le suivant : quand, dans le formulaire du filtre, je sélectionne (à l'aide d'un champ de type entité) le hardware "PC" par exemple et que j'affiche la liste correspondante, j'obtiens une liste correctement filtrée (c'est à dire la liste des entité "Jeu" liées aux hardwares sélectionnés) mais la colonne "hardwares" de ma liste n'affiche que l'intitulé des entités "Hardware" sélectionnées dans le filtre (bien que l'entité "Jeu" soit liée à d'autres hardwares).

Voici la construction (abrégée) de ma query :
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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 
$query = $this->createQueryBuilder('a')
 
                   ->leftJoin('a.user', 'i')
 
                      ->addSelect('i')
 
                   ->leftJoin('a.hardwares', 'c')
 
                     ->addSelect('c');
 
if($searchCriteria['hardwares'][0] != null){
 
        $i = 0;
 
        $innerQuery = '';
 
        foreach ($searchCriteria['hardwares'] as $value) {
 
            $i++;
 
            $innerQuery .= 'c.id like :hardwares'.$i.' OR ';
 
            $query->setParameter('hardwares'.$i,$value);
 
        }
 
        $innerQuery = substr_replace($innerQuery ,"",-4);
 
        $query->andWhere($innerQuery);
 
}
 
$query->orderBy('a.sortie', 'DESC')
 
         ->getQuery();
Et l'affichage dans la colonne "hardwares"de ma liste :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
{% for jeu in jeux %}
   {% for key,value in jeu.hardwares %}
      {{ jeu.hardwares[key].modele }}
   {% endfor %}    
{% endfor %}
J'aimerais avoir la totalité des hardwares liés au jeu dans la colonne hardwares de ma liste, même si ceux-ci ne sont pas sélectionnés dans le filtre (et tout en gardant la fonction du filtre par hardwares évidemment). Je ne vois pas comment contourner ce problème. Merci d'avance !