2013-07-11 2 views
0

Привет, мне нравится добавлять пользовательскую функцию в doctrine.Symfony2 doctrine custom function

мне нужно добавить MySQL Field функцию, чтобы иметь возможность заказать по размеру, как здесь: mysql custom order by with mixed data types

Поэтому я использую это как Exemple: https://github.com/beberlei/DoctrineExtensions/blob/master/lib/DoctrineExtensions/Query/Mysql/Field.php

и попытаться добавить его в Symfony2 как что: http://symfony.com/fr/doc/current/cookbook/doctrine/custom_dql_functions.html

Когда я делаю:

$queryBuilder->addOrderBy("FIELD(size, 'XS', 'S', 'M', 'L', 'XL', 'XXL', 'XXXL'), size, length", 'ASC'); 

Я всегда получаю ошибку: Error: Expected end of string, got '('

Любая идея, как ее реализовать?

ответ

1

Вы не можете использовать функции DQL в пределах ORDER BY. Вы должны выбрать результат FIELD() функции в скрытое поле и сортировка результатов с помощью этого поля:

SELECT ..., FIELD(size, ...) AS HIDDEN sizeOrder 
FROM ... 
ORDER BY sizeOrder 

sizeOrder поля не влияют на результаты, поскольку он не будет даже увлажненным.