2010-09-23 90 views
1

我想测试DQL是否支持这种语法:ROUND(NOW(), 'YEAR')(MySQL确实)。以下是我试过在MySQL控制台:如何在没有FROM子句的情况下测试dql代码?

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

你可以做这样的事情:

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' 
+0

谢谢,这个作品!太糟糕了,如果没有至少有一条记录的表格,就无法测试功能... – greg0ire 2010-09-23 13:13:18

相关问题