Подзапросы в Доктрине 2 - PullRequest
0 голосов
/ 17 января 2019

У меня проблема с работой подзапросов с Doctrine.

Вот моя просьба о доктрине:

$qb = $this->getEntityManager()->createQueryBuilder()
            ->select("plafond")
            ->addSelect("plafond.id AS id")
            ->addSelect('(select count(gd) from ACCUEILBundle:Ttgeneration gd 
                inner join ACCUEILBundle:Tgeneration gn with gn.id = gd.generation 
                where gn.nouveaulot = :new_generation and 
                gd.donnee = :entity_id and gd.action = :action_creation) as suppr')
            ->from("ACCUEILBundle:Trprst", "plafond")
            ->setParameter('new_generation', 1)
            ->setParameter('entity_id', 'plafond.id')
            ->setParameter('action_creation',32);

Полагаю, проблема в setParameter с plafond.id: это похоже на то, что идентификатор текущей записи не используется, возможно.

Действительно, это поле поддержки должно быть 0 для каждой записи, но число 39. Но с запросом доктрины это похоже на то, что у меня есть 0 для каждой записи.

Но когда я пишу запрос в чистом SQL, нет проблем:

SELECT plafond.id AS id, 
  (select count(*) from ttgeneration gd
     inner join tgeneration gn on gn.id = gd.generation
   where gn.nouveaulot = 1 and
     gd.donnee = plafond.id and gd.action = 32) as suppr
FROM trprst plafond

Результат чистого SQL-запроса:

36      0                     
37      0                     
38      0                     
39      1  

Спасибо

...