在Doctrine2中扩展我的ORDER BY

时间:2012-06-08 13:08:35

标签: php doctrine-orm sql-order-by version dql

我有一个包含版本号的表格,我希望自然地将它们读出来 原始SQL没有问题:

SELECT * FROM versions ORDER BY REPLACE(version, '.', '')+0 DESC

但是如果我在Doctrine2中写这样的查询:

$qry = $this->createQueryBuilder('v')
  ->select('v')
  ->orderBy("REPLACE(v.version, '.', '')+0", 'DESC');

我只得到

  

致命错误:未捕获异常'Doctrine \ ORM \ Query \ QueryException',消息'[语法错误]第0行,第100栏:错误:字符串的预期结束,得到'(''在......中

有人知道如何为Doctrine2编写此查询吗?

1 个答案:

答案 0 :(得分:0)

经过长时间的努力,我意识到我需要使用NativeQuery写出查询:

$rsm = new \Doctrine\ORM\Query\ResultSetMapping();
// do some result mapping here ....

$query = $this->_em->createNativeQuery("SELECT v.* FROM versions v ORDER BY REPLACE(v.version, '.', '')+0 DESC", $rsm);

$versions = $query->getResult();