order by d'un champ d'une entité liée
bonjour à tous !
j'ai 2 entités : Movie et userMovie telles que Movie a plusieurs UserMovie et UserMovie appartient à un seul Movie
je récupère une liste de UserMovie que j'aimerais trier par un attribut de Movie
si je fais
Code:
1 2 3 4 5
|
$films = $this->getDoctrine()
->getManager('cine')
->getRepository('EliaCineBundle:UserMovie')
->findBy(array('user' => $user_id)); |
j'ai bien ma liste, avec tous les attributs dont j'ai besoin dans mon template mais pas dans le bon ordre bien que la relation soit définie telle que :
Code:
1 2 3 4 5 6
| /**
* @ORM\ManyToOne(targetEntity="Movie", inversedBy="usermovies")
* @ORM\JoinColumn(name="movie_id", referencedColumnName="id")
* @ORM\OrderBy({"title" = "ASC"})
*/
private $movie; |
j'ai donc créé un repository et une méthode telle que :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
$qb = $this->createQueryBuilder('um');
$qb->select('um')
// ->innerJoin('um.user', 'u')
->innerJoin('um.movie', 'm')
->addSelect('m')
// ->add('where', $qb->expr()->eq('u.id', $user_id))
->orderBy('m.title', 'ASC')
->getQuery()
->getResult();
return $qb; |
mais, même si la requête SQL est correcte, ça ne me renvoie rien dans mon template
à coups de dump, j'ai constaté que findBy renvoie un array alors que querybuilder renvoie une collection d'objets
j'ai essayé
Code:
->getResult(Query::HYDRATE_ARRAY);
sans effet
et même (en mode cra cra) mais du coup, je n'ai plus accès aux attributs de Movie dans le template...
comment faire pour que query_builder renvoie un array directement utilisable dans le template ?
merci d'avance !