JOIN DQL SYMFONY - PullRequest
       40

JOIN DQL SYMFONY

0 голосов
/ 16 февраля 2020

я хочу посчитать, сколько baby для родителя

 class abonnementRepository extends \Doctrine\ORM\EntityRepository
{
    public function SumEnfantDQL($id)
    {
        $entityManager = $this->getEntityManager();
        $query = $entityManager->createQueryBuilder();
        $query->select('sum(o.id) AS somme');
        $query->from('AppBundle:enfant', 'o');
        $query->join('AppBundle:User','p')->where('p.id = :id');
        $rez = $query->getQuery()->getResult();
        return $rez;
    }
}

у объекта enfant есть matricul_prt, а у пользователя объекта есть enfant_id, а параметром $ id является идентификатор родителя, я не знаю, как это работает с объединением или innerJoin. Так что я хочу сделать, это

SELECT SUM(*)
FROM enfant e
WHERE e.matricul_prt = $id; 

Большое вам спасибо

1 Ответ

1 голос
/ 16 февраля 2020

Прежде всего, вы должны создать класс Repository для AppBundle: enfant, этот репозиторий не похож на созданный для 'enfant'. Далее метод должен выглядеть следующим образом, но только если есть действительная связь между 'enfant' и 'User'.

public function SumEnfant(int $id): int
{
    return $this->createQueryBuilder('e') <- alias for 'enfant'
        ->select('sum(e.id)') 
        ->join('e.user', 'u') <- join by entity property
        ->where('u.id = :id') <- condition for associated entity
        ->setParameter('id' , $id) <- parameter
        ->getQuery()
        ->getSingleScalarResult();
}

Попробуйте, прочитайте do c еще раз и измените для вашего случая.

...