代码之家  ›  专栏  ›  技术社区  ›  greg0ire

没有FROM子句,如何测试dql代码?

  •  1
  • greg0ire  · 技术社区  · 14 年前

    ROUND(NOW(), 'YEAR') (MySQL有)。以下是我在MySQL控制台中尝试的内容:

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

    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中的函数?

    1 回复  |  直到 14 年前
        1
  •  1
  •   greg0ire    14 年前

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

    我知道您不想使用FROM子句,但我认为DQL查询必须作用于模型。

    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'