使用Doctrine2在WHERE子句中使用子查询

时间:2013-12-30 15:42:53

标签: sql symfony doctrine-orm subquery doctrine-query

我正在使用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会返回此错误:

  

错误:预期=,<,< =,<>,>,> =,!=,得到'喜欢'

相同的查询(在SQL而不是DQL中调整)可以正常工作。

我试图找到一个解决方案但没有任何结果......

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

该错误告诉我DQL解析器无法理解您的查询。在这种情况下你有几个选择。

您可以扩展DQL解析器,以便Doctrine将您的查询识别为有效。您可以在Doctrine cookbook文章DQL User Defined Functions中阅读。

另一种选择是使用Native Query.

我希望有所帮助。我确定还有其他方法。我建议扩展解析器,以便您可以继续使用查询生成器和新功能。