【发布时间】:2019-01-11 15:30:27
【问题描述】:
我正在开发一个 Symfony 3.4 项目,我正在尝试将一个 sql 查询转换为 DQL 查询,但我遇到了一个问题。
Mysql查询:
select sum(montant_paye)
from
(select montant_paye
from vente
where client_id = 1
and montant_paye > 0
order by date ASC
limit 2)
as T;
DQL 查询(错误):
return $this->getEntityManager()
->createQuery('
SELECT SUM(montantPaye) as Total
FROM
SELECT v.montantPaye
FROM AppBundle:Vente v
where v.montantPaye > 0
AND v.client = '.$clientId.'
ORDER BY v.date ASC
limit 2
')
->getResult();
错误:
[Semantical Error] line 0, col 71 near 'SELECT v.montantPaye
': Error: Class 'SELECT' is not defined.
有人有正确的 DQL 查询的解决方案吗?
【问题讨论】:
-
很确定您仍然需要内部选择周围的括号。可能还有其他问题。当然,内联 $clientId 是一件坏事。
-
在这种情况下,学说将“SELECT”理解为实体类。我几乎可以肯定用括号括起来的子查询可以解决这个问题。
标签: symfony doctrine-orm subquery symfony-3.4 doctrine-query