私はSymfony2とDoctrine2を使用していますが、このクエリに問題があります:
$query = $em->createQuery('SELECT a FROM MyBundle:Artiste a WHERE a.id IN (4,12,1)');
$result = $query->getArrayResult();
そして、私は常にa.id、つまり1、4、12の順に結果を取得しますが、IDのリストとして順序付けられた結果を表示したいのです:4、12、1。
更新 @BramGerritsentコメントのおかげで、カスタムDQL関数FIELDを登録したので、これが私が行ったことです。
MyBundle / DQL / Field.phpに、次のコードを挿入しました(https://github.com/beberlei/DoctrineExtensions/blob/master/lib/DoctrineExtensions/Query/Mysql/Field.php)(変更したばかりですある名前空間
namespace MyBundle\DQL;
次に、Symfony2のドキュメント(http://symfony.com/doc/2.0/cookbook/doctrine/custom_dql_functions.html)に示されているように、config.ymlに以下を追加します。
orm:auto_generate_proxy_classes: "%kernel.debug%" entity_managers:default:auto_mapping:true dql:string_functions:field:MyBundle \ DQL \ Field
したがって、次のクエリ$ query =
$em->createQuery('SELECT a FROM MyBundle:Artiste a WHERE a.id IN (4,12,1) ORDER BY FIELD(4,12,1)');
を記述しましたが、このエラーが発生します:[Syntax Error] line 0, col 75: Error: Expected end of string, got '('