2013-07-11 2 views
0

안녕하세요 저는 교리에 맞춤 함수를 추가하고 싶습니다. mysql custom order by with mixed data typessymfony2 doctrine 맞춤 함수

그래서 난 exemple로 사용 : https://github.com/beberlei/DoctrineExtensions/blob/master/lib/DoctrineExtensions/Query/Mysql/Field.php

과 같은 Symfony2에 추가하려고

나는 여기에 같은 크기로 주문 할 수 MySQL의 필드를 기능을 추가 할 필요가 그 : 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

ORDER BY 절 내에 DQL 함수를 사용할 수 없습니다. 당신은 그 필드를 사용하여 결과를 숨겨진 필드에 FIELD() 함수의 결과를 선택하고 분류해야합니다 심지어 수화되지 않습니다으로

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

sizeOrder 필드는 결과에 영향을 미치지 않습니다.