2013-07-11 3 views
0

Salut J'aime ajouter une fonction personnalisée à la doctrine.Fonction personnalisée de doctrine de Symfony2

je dois ajouter un mysql champ fonction pour pouvoir commander par la taille comme ici: mysql custom order by with mixed data types

J'utiliser comme exemple: https://github.com/beberlei/DoctrineExtensions/blob/master/lib/DoctrineExtensions/Query/Mysql/Field.php

et essayer de l'ajouter à Symfony2 comme que: http://symfony.com/fr/doc/current/cookbook/doctrine/custom_dql_functions.html

Quand je fais:

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

Je reçois toujours l'erreur: Error: Expected end of string, got '('

Une idée de comment l'implémenter?

Répondre

1

Vous ne pouvez pas utiliser les fonctions DQL dans la clause ORDER BY. Vous devez sélectionner le résultat de la fonction FIELD() dans le champ caché et trier les résultats en utilisant ce domaine:

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

champ sizeOrder n'affectera pas vos résultats car il ne sera même pas hydraté.