У меня проблема с работой подзапросов с 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
Спасибо