我得到了这个 Doctrine 查询:
select upper(substring(e.name, 1, 1)) first_letter
from Application\Models\Exercise e
group by first_letter
order by first_letter asc
但它会引发异常消息:
Error: 'first_letter' does not point to a Class.
如果我省略group by
和order by
,它可以工作。
在这种情况下我是否必须使用本机查询或在我的客户端代码中进行排序和分组(根据数据库中的数据量可能不是一个好主意......)或者是否有可能让这个查询工作?
谢谢!
编辑:
这是我目前的方法,不是很好,但暂时有效,因为数据库中没有太多数据:
$tmpResult = $this->getEntityManager()->createQuery('
select upper(substring(e.name, 1, 1)) first_letter
from Application\Models\Exercise e
')->getResult();
$groupedAndSortedResult = array();
foreach($tmpResult as $row) {
$groupedAndSortedResult[$row['first_letter']] = $row['first_letter'];
}
sort($groupedAndSortedResult);
return array_values($groupedAndSortedResult);