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

Eventとの間の関連付けを定義し、関数Listを使用して選択を追加できるようです。そのようにはるかに簡単で論理的です: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 に答える