0

是否可以使用 dql 中的子选择获取数据并将结果放入不是实体列的类属性中?

hasfreelist是类属性,但不是 mysql 中的实体列。

这是我的 dql:

SELECT e, DATE(e.begin) dbegin, 
(SELECT COUNT(g) FROM AcmeDemoBundle:list  g WHERE e.id = g.fkevent) AS e.hasfreelists     
FROM AcmeDemoBundle:event e JOIN e.fklocation l 
WHERE e.enabled=1 e.begin>=:from 
ORDER BY dbegin, e.topevent DESC

我有以下错误:

An exception has been thrown during the rendering of a template 
("[Syntax Error] line 0, col 143: Error: 
Expected Doctrine\ORM\Query\Lexer::T_FROM, got '.'")

但它什么也没告诉我。谢谢你的帮助。

4

1 回答 1

1

在我看来,您可以定义 and 之间的关联EventList并使用该SIZE功能添加您的选择。这样更容易和合乎逻辑:

SELECT e, DATE(e.begin) AS dbegin, SIZE(e.lists) AS number_of_lists
FROM [...]

您仍然可以hasFreeList在实体类上定义一个方法,该方法将返回sizeof($this->lists) > 0.

但我认为,您收到此错误的原因是因为您将子选择定义为e.hasfreelist. 虽然它是您的类的属性,但这是一个 DQL 语法错误(应该是(SELECT x FROM y) AS z)。此外,您的日期选择缺少AS运算符。

于 2012-06-30T08:05:28.897 回答