Erreur requête DQL

Résolu
Toto -  
jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

J'ai réalisé une requête DQL et une erreur apparaît lorsque je la lance. Voici l'erreur :

Expected Doctrine\ORM\Query\Lexer::T_COMMA, got '-'

Voici ma requête :

SELECT a.updatedAt
FROM AppBundle:Account AS a 
WHERE (a.validate= 1)
AND ( DATE_ADD(a.updatedAt, INTERVAL -365 DAY) > DATE_ADD(2016-11-04, INTERVAL -30 DAY) )


Avez-vous une idée ?? :/

1 réponse

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Bonjour,
    Ta date ne devrait elle pas être entre quotes ?

    0
    1. Toto
       
      Bonjour,

      Justement ma date est entre quotes. C'est ça que je ne comprends pas :/

      AND ( DATE_ADD("a.updatedAt", INTERVAL -'.$ldap_account_day_validity.' DAY) > DATE_ADD("'.$date_now->format('Y-m-d').'", INTERVAL -30 DAY) )
      


      Ce que je t'avais donné, c'est que m'affiche Symfony lors de l'erreur donc la date est affichée sans quotes mais dans mon code elle est bien entre quotes ;)

      QueryException: SELECT a.updatedAt
      FROM AppBundle:Account AS a 
      WHERE (a.isLdapAccount = 1)
      AND ( DATE_ADD(a.updatedAt, INTERVAL -365 DAY) > DATE_ADD(2016-11-04, INTERVAL -30 DAY) )
      


      Et j'ai donc cette erreur qui s'affiche : Error: Expected Doctrine\ORM\Query\Lexer::T_COMMA, got '-'
      0
    2. Utilisateur anonyme > Toto
       
      Bonjour

      Dans la première requête que tu donnes dans ton message 2, il y a des doubles quotes en trop autour de "a.updatedAt".
      J'ai du mal à croire que les doubles quotes disparaissent comme ça. Peux-tu nous montrer l'instruction complète de création de ta requête, pas seulement un petit bout ?
      0
    3. Toto > Utilisateur anonyme
       
      Bonjour,

      Voici ma requête changée depuis la dernière fois (j'ai effectué quelques modifs) :

      $query = $em->createQuery('SELECT a.updatedAt
                                          FROM AppBundle:Account AS a 
                                          WHERE (a.isLdapAccount = 1)
                                          AND TO_DAYS('.$date_now->format('Y-m-d').') - TO_DAYS(a.updated) > '.$ldap_account_day_validity.'
       '); 
      


      Et toujours une erreur :

      Error: Expected known function, got 'TO_DAYS'
      0
    4. Utilisateur anonyme > Toto
       
      On a complètement changé de sujet, là. Pas la même requête, pas la même erreur…
      Avec quel système de gestion de base de données travailles-tu ? Ce ne doit pas être mysql, car mysql connaît TO_DAYS et ton message d'erreur dit qu'il ne la connaît pas.
      Tu parles de requête DQL, je n'en ai jamais entendu parler (mais je ne suis pas spécialiste). Tu es sûr que tu ne voulais pas dire SQL ?
      0