Bonjour,
J'ai deux entités Candidate et Interview avec une relation 1 à n. L'entité Interview comprend donc un champ candidate_id.
Mon but est d'afficher un tableau avec pour chaque candidat :
- id
- nom
- prenom
-....
-total interviews (c'est ici que je bloque)
Actuellement je fais une requête simple qui affiche tous les candidats actifs.
Ce que j'aimerais, c'est afficher la liste des candidats avec pour chacun d'eux le nbr total d'interviews.
Je suppose donc que je dois passer par une jointure, faire un count et un groupeBy. Bien que je comprenne bien ce que je dois faire, je ne sais pas comment le formuler concrètement.
Je suppose que ça devrait ressembler à qqch comme cela (à quelques erreurs près bien sûr):
SELECT Candidate.LastName, Candidate.FirstName, Interview.id
FROM Candidate
INNER JOIN Interview
ON Candidate.id=Interview.candidate_id
GROUP BY Candidate.id
mais avec la syntaxe des helpers Doctrine, je vois pas trop ) J'ai jeté un coup d'oeil à la doc mais bon ce type d'exemple :
$qb->innerJoin('u.Group', 'g', 'ON', 'u.group_id = g.id AND g.name = ?1')
ne m'aide pas des masses.
Je n'ai jusqu'à présent été confronté à aucune jointure dans mon projet SF2. J'ai donc pour le moment toujours utilisé des choses assez simple comme ceci :
1 2 3 4 5 6 7 8 9 10
| public function getOnlyActive ()
{
$qb = $this->createQueryBuilder('a');
$qb->where("a.ACTIVE = 'active'");
return $qb->getQuery()->getResult();
} |
Pourriez-vous me donner quelques infos ? ou me donner des liens où je peux trouver des exemples concrets svp ?
EDIT :
J'ai essayé comme ceci :
1 2 3 4 5 6 7 8 9 10
| public function getActiveAndCountInterviews ()
{
$qb = $this->createQueryBuilder('a','b');
$qb->select('a.Firstname')
->from('Candidate a','Interview b')
->innerJoin('a.Candidate', 'b', 'ON', 'a.id = b.candidate');
return $qb->getQuery()->getResult();
} |
Mais sans succès.
Partager