Erreur requête DQL

Résolu
Toto -  
jordane45 Messages postés 38486 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

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

0
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
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
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
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
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Utilisateur anonyme
 
Salut le père,
DQL est utilisé par Synfony pour effectuer des requêtes.
C'est une syntaxe un peu particulière...
https://www.doctrine-project.org/projects/doctrine-orm/en/latest/reference/query-builder.html
0