【发布时间】:2014-01-17 12:35:01
【问题描述】:
我在一个 symfony2 项目中,我遇到了以下查询的问题:
SELECT count(a)
FROM CoreBundle:Agency a
WHERE (
SELECT count(c.id)
FROM CoreBundle:Agency a1, CoreBundle:Client c
WHERE a1.id = c.agency AND a1.id = a.id
) LIKE "%1%"
当我想要结果时,Doctrine2 返回此错误:
错误:预期 =、、>、>=、!=、得到 'LIKE'
相同的查询(在 SQL 中而不是 DQL 中改编)工作正常。
我试图找到解决方案,但没有任何结果......
感谢您的帮助!
【问题讨论】:
-
您希望子查询返回什么样的值?也许我们可以帮助以 Doctrine 接受的方式制作它。 MySQL 本身似乎支持在该位置使用
LIKE。 -
子查询有时会有所不同,它可以返回 int 或 string 值,在这个例子中它只返回 int 值,因为它是一个 COUNT()
-
您可以将子查询的结果转换为字符串吗?不知道如何在 symfony 中做到这一点,但一定有办法。
-
如果不进行 2 次查询(首先是子查询,然后是查询),我不知道该怎么做,而且我不确定结果。也许有一种方法可以用一个学说2函数来做到这一点,但我不知道是哪一个
-
我不太了解您的问题。您正在尝试计算至少拥有 1 个客户的代理机构的数量吗?为什么要使用 LIKE 作为计数结果?
标签: sql symfony doctrine-orm subquery doctrine-query