我使用Symfony2中和學說2,我有這個查詢的一個問題:DOCTRINE:IN聲明已訂購?
$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
UPDATE 由於@Bram Gerritsent評論,我註冊自定義功能DQL領域,所以這裏是我做了什麼:
在MyBundle/DQL/Field.php,我已插入下面的代碼(https://github.com/beberlei/DoctrineExtensions/blob/master/lib/DoctrineExtensions/Query/Mysql/Field.php)(我只是改變了命名空間是
namespace MyBundle\DQL;
然後,我添加爲顯示在我的config.yml以下在Symfony2的文檔(http://symfony.com/doc/2.0/cookbook/doctrine/custom_dql_functions.html)
ORM: auto_generate_proxy_classes: 「%kernel.debug%」 entity_managers: 默認: auto_mapping:真 DQL: string_functions: 領域:MyBundle \ DQL \場
所以,我寫了下面的查詢$查詢=
$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 '('
感謝您的回答,我已經更新了我的問題。 – Reveclair 2013-03-05 11:10:56
在查詢中有一個重複的')'。嘗試:'$ em-> createQuery('SELECT a FROM MyBundle:Artiste a WHERE a.id IN(4,12,1)ORDER BY FIELD(4,12,1)');' – 2013-03-05 12:07:02
對不起,很遺憾,這是在stackoverflow錯誤,但它是正確的我的代碼$ query = $ em-> createQuery('SELECT a FROM MyBundle:Artiste a WHERE a.id IN(4,12,1)ORDER BY FIELD(4,12,1) 「);所以我仍然有同樣的錯誤.. – Reveclair 2013-03-05 23:18:40