Symfony1 没有FROM子句,如何测试dql代码?
我想测试DQL是否支持这种语法:Symfony1 没有FROM子句,如何测试dql代码?,symfony1,doctrine,Symfony1,Doctrine,我想测试DQL是否支持这种语法:ROUND(NOW(),'YEAR')(MySQL支持)。以下是我在MySQL控制台中尝试的内容: mysql> SELECT ROUND(NOW(), 'YEAR'); +----------------------+ | ROUND(NOW(), 'YEAR') | +----------------------+ | 20100923135639 | +----------------------+ 在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
如何在不使用FROM子句的情况下在DQL中测试函数?您可以执行以下操作:
Doctrine_Query::create()
->from('Model m')
->select('m.id, ROUND(NOW(), "YEAR") AS round_test')
->fetchOne();
我知道您不想使用FROM子句,但我认为DQL查询必须作用于模型
greg0ire>在我的例子中,以下是我尝试过的(以及结果):
你可以这样做:
Doctrine_Query::create()
->from('Model m')
->select('m.id, ROUND(NOW(), "YEAR") AS round_test')
->fetchOne();
我知道您不想使用FROM子句,但我认为DQL查询必须作用于模型
greg0ire>在我的例子中,以下是我尝试过的(以及结果):
谢谢,这很有效!太糟糕了,如果没有一个至少有一条记录的表,您就无法测试函数…谢谢,这很有效!太糟糕了,如果没有一个至少有一条记录的表,就无法测试函数。。。