Doctrine2 v. 2.1.7を使用してSymfony2でこれを実行しようとしています:
$query = $this->em->createQuery(
"SELECT a
FROM ".$repo." a
WHERE a.type_id = :typeid
AND a.scenario = :scen
AND a.contact_id = :cid
AND a.row_type LIKE :rwtp
ORDER BY SUBSTRING(a.row_type, 4, 1) "
)->setParameters(
array(
'typeid' =>$sesData['type_id'],
'scen' =>$sesData['scenario'],
'cid' =>$sesData['contact_id'],
'rwtp' =>'%.'.$whereVal.'%'
)
);
$customValues = $query->getResult();
Doctrine 2 は ORDER BY 句で失敗します。これは、列名と表示される並べ替え方向以外は何も好きではないためです。
ネイティブクエリを使用するためのドキュメントを見てきましたが、このクエリは複数のテーブルからデータを取得するために使用されているため (使用するグローバルメソッド内にあるため)、うまくいきません。上記の where 句を超えて、残りの列名はテーブルごとに異なります。
これを実現するには、ネイティブではない他のすべての DQL クエリと同様に、マッピング (ハイドレーション?) を自動的に行う、真にネイティブなクエリが必要になると思います。しかし、その部分は私を悩ませています。
これを機能させるにはどうすればよいですか?