Как я могу проверить код dql без предложения FROM? - PullRequest
1 голос
/ 23 сентября 2010

Я хочу проверить, поддерживает ли DQL этот синтаксис: ROUND(NOW(), 'YEAR') (MySQL поддерживает). Вот что я попробовал в консоли MySQL:

mysql> SELECT ROUND(NOW(), 'YEAR');
+----------------------+
| ROUND(NOW(), 'YEAR') |
+----------------------+
|       20100923135639 |
+----------------------+

Попытка сделать то же самое в DQL дает следующее:

techosaure :( \>~/workspace/carel  ./symfony  doctrine:dql --show-sql "Select ROUND(NOW(),'YEAR')";
>> doctrine  executing dql query
DQL: Select ROUND(NOW(),'YEAR')
PHP Fatal error:  Maximum function nesting level of '100' reached, aborting! in /opt/symfony-1.4.6/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Tokenizer.php on line 352

Как я могу протестировать функцию в DQL без использования предложения FROM?

1 Ответ

1 голос
/ 23 сентября 2010

Вы можете сделать что-то вроде этого:

Doctrine_Query::create()
  ->from('Model m')
  ->select('m.id, ROUND(NOW(), "YEAR") AS round_test')
  ->fetchOne();

Я знаю, что вы не хотите использовать предложение FROM, но я думаю, что запросы DQL должны действовать на модель.

greg0ire> В моем случае вот что я попробовал (и результат):

techosaure :( \>~/workspace/carel  ./symfony  doctrine:dql --show-sql "Select ROUND(NOW(),'YEAR') FROM AdminEntity";
>> doctrine  executing dql query
DQL: Select ROUND(NOW(),'YEAR') FROM AdminEntity
SQL: SELECT ROUND(NOW(), 'YEAR') AS a__0 FROM admin_entity a
found 1 results
-
  ROUND: '20100923151158'
...