我有一个包含版本号的表格,我希望自然地将它们读出来 原始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编写此查询吗?
答案 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();