私はこの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);