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
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 $films = $this->getDoctrine() ->getManager('cine') ->getRepository('EliaCineBundle:UserMovie') ->findBy(array('user' => $user_id));
j'ai donc créé un repository et une méthode telle que :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
mais, même si la requête SQL est correcte, ça ne me renvoie rien dans mon template
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
à coups de dump, j'ai constaté que findBy renvoie un array alors que querybuilder renvoie une collection d'objets
j'ai essayésans effet
Code : Sélectionner tout - Visualiser dans une fenêtre à part ->getResult(Query::HYDRATE_ARRAY);
et même (en mode cra cra)mais du coup, je n'ai plus accès aux attributs de Movie dans le template...
Code : Sélectionner tout - Visualiser dans une fenêtre à part return array($qb);
comment faire pour que query_builder renvoie un array directement utilisable dans le template ?
merci d'avance !
Partager