Je me sers de Symfony2 et de la doctrine 2, et j'ai un problème avec cette requête:DOCTRINE: Commande IN commandée?
$query = $em->createQuery('SELECT a FROM MyBundle:Artiste a WHERE a.id IN (4,12,1)');
$result = $query->getArrayResult();
Et je reçois toujours l'ordre des résultats par a.id, soit 1 puis 4 puis 12 pendant que je voudrais afficher la résultats ordonnés que la liste des ids: 4 puis 12 puis 1.
MISE à JOUR Merci à @Bram Gerritsent commentaire, j'enregistrer une fonction DQL personnalisée FIELD, alors voici ce que je l'ai fait:
Dans MyBundle/DQL/field.php, j'ai inséré le code suivant (https://github.com/beberlei/DoctrineExtensions/blob/master/lib/DoctrineExtensions/Query/Mysql/Field.php) (je viens de changer l'espace de noms pour être
namespace MyBundle\DQL;
, j'ajoute ensuite ce qui suit dans mon config.yml comme le montre la documentation Symfony2 (http://symfony.com/doc/2.0/cookbook/doctrine/custom_dql_functions.html)
ORM: auto_generate_proxy_classes: "% kernel.debug%" entity_managers: défaut: auto_mapping: true dql: string_functions: champ : MyBundle \ DQL \ champ
Alors, je l'ai écrit la requête suivante $ query =
$em->createQuery('SELECT a FROM MyBundle:Artiste a WHERE a.id IN (4,12,1) ORDER BY FIELD(4,12,1)');
mais je reçois cette erreur:[Syntax Error] line 0, col 75: Error: Expected end of string, got '('
Merci pour votre réponse, j'ai mis à jour ma question. – Reveclair
Vous avez un doublon ')' dans votre requête.try: '$ em-> createQuery ('CHOISISSEZ UN FROM MyBundle: Artiste a WHERE a.id IN (4,12,1) ORDER BY FIELD (4,12,1)');' –
Désolé, malheureusement, c'était une erreur sur stackoverflow mais c'était juste sur mon code $ query = $ em-> createQuery ('CHOISISSEZ UN FROM MyBundle: Artiste a O WH a.id IN (4,12,1) ORDER BY FIELD (4,12,1) '); Donc, je suis toujours avec la même erreur .. – Reveclair