Bonjour,
Je fais du DQL sous Symfony 4.2
J'ai la requête suivante, qui fonctionne:

Code php : 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
    public function findEtudiantPasPointer($em, $idCours, $idDate, $idCreneau)
    {
      $query = $em->createQuery("
      SELECT u.nomUtilisateur, u.prenomUtilisateur, u.id AS ec_id
      FROM App\Entity\EtudiantCours ec
      LEFT JOIN App\Entity\Pointage po WITH ec.etudiant = po.utilisateurEtudiant
      JOIN App\Entity\Utilisateur u WITH po.utilisateurEtudiant = u.id
      JOIN App\Entity\CoursPlanning cp WITH po.cours = cp.id
      WHERE cp.cours = :idCours
      AND cp.plageHoraire = :idCreneau
      AND cp.dateCours = :idDate
      ")
      ->setParameter('idCours', $idCours)
      ->setParameter('idDate', $idDate)
      ->setParameter('idCreneau', $idCreneau);
 
      $result  = $query->getResult();
      return $result;
    }
Elle me retourne 2 résultats.

Je voudrai que cette requête me retourne la différence des entrées entre "EtudiantCours" et "Pointage".
En claire, Pointage retrace les pointages des étudiants et "EtudiantCours" et retrace les élèves inscrits. Je veux savoir quels élèves inscrits n'ont pas pointé. Soit :
Quels sont les id de la table ec.etudiant qui ne sont pas présent dans po.utilisateurEtudiant? Pourquoi mon LEFT JOIN ne suffit pas ? (un JOIN normal me donne le même résultat).
Merci d'avance!