Erreur requête DQL

Résolu/Fermé
Toto - Modifié par ^Abel^ le 4/11/2016 à 09:16
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 - 7 nov. 2016 à 15:23
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 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
4 nov. 2016 à 09:53
Bonjour,
Ta date ne devrait elle pas être entre quotes ?

0
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
5 nov. 2016 à 21:28
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
Modifié par Toto le 7/11/2016 à 09:20
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
7 nov. 2016 à 11:36
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 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > Utilisateur anonyme
7 nov. 2016 à 12:17
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