我正在使用 Symfony2 和教义 2,但这个查询有问题:
$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。
更新 感谢@Bram Gerritsent 评论,我注册了一个自定义 DQL 函数 FIELD,所以这就是我所做的:
在 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: 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 '('