Salut a tous, alors voila je n'ai pas l'habitude de DQL et j'aurais besoin de votre aide pour une requête =)
Contexte:
Dans une de mes applications je fait un système de réservation de salles de réunion pour mon entreprise, j'ai donc deux classes une classe Salle et une classe Reservation.
Les salles sont une propriété de réservation (oneToMany), j'ai donc dans chaque instance de réservation, une instance de la salle associée.
Dans une requête, je veux ressortir toutes les réservations comprises entre deux dates (pour ça aucun problème) et aussi d'une sélection de salles. par exemple:
J'ai 4 salles (Salle1, Salle2, ...) et je veux ressortir les réservations des salles 1 et 3.
Voici ma requête: (le tout est dans Project\ReservationsSallesBundle\Entity\ReservationRepository)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 $qb = $this->createQueryBuilder('r'); $qb->where('r.debut BETWEEN :debut and :fin') ->setParameter('debut', $start) ->setParameter('fin', $end); $qb = $this->filterSalles($qb, $salles);//$salles = Un array d'instances de salles $resObjects = $qb->getQuery()->getResult();
et ma fonction filterSalles:
Et pour finir mon message d'erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 private function filterSalles($qb, $salles){ if($salles != null){ foreach ($salles as $s => $value) { $qb->orWhere('r.salle = ?', $value); //c'est cette ligne qui me pose problème } } return $qb; }
En espérant avoir donné assez d'infos, merci d'avance =)"Expression of type 'Project\ReservationsSallesBundle\Entity\Salle' not allowed in this context"
Partager