IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Syntax error | Query builder [4.x]


Sujet :

Symfony PHP

  1. #1
    Membre habitué Avatar de Skunka
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2018
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 135
    Points : 158
    Points
    158
    Par défaut Syntax error | Query builder
    Bonjour,
    j'essaye d'effectuer une requête censé me retourner une liste d'ami mais je me retrouve avec cette erreur:

    Nom : syntax error.JPG
Affichages : 239
Taille : 23,5 Ko

    Je me suis inspiré de la doc symfony : https://symfony.com/doc/current/doct...the-repository

    Voici le Repository:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    <?php
     
    namespace App\Repository;
     
    use App\Entity\Ami;
    use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
    use Symfony\Bridge\Doctrine\RegistryInterface;
     
    class AmiRepository extends ServiceEntityRepository
    {
        public function __construct(RegistryInterface $registry)
        {
            parent::__construct($registry, Ami::class);
        }
     
        public function chargerListeAmi(int $idUtil){
            $qb = $this->_em->createQueryBuilder('a')
                ->andWhere('utilSource = :idUtil')
                ->setParameter(':idUtil', $idUtil)
                ->orderBy('a.statut')
                ->getQuery()
            ;
     
            return $qb->execute();
        }
    }

    Je bloque... vous avez une idée ?

    Merci d'avance !
    Traverse les rues ...

    Git: https://github.com/BlueSkunka

    Débutant à vie

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 351
    Points : 582
    Points
    582
    Par défaut
    Salut,

    Est-ce qu'il ne te manquerait pas un "a." dans andWhere et un ":" en trop dans setParameter ?
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    ...
        public function chargerListeAmi(int $idUtil){
            $qb = $this->_em->createQueryBuilder('a')
                ->andWhere('a.utilSource = :idUtil')
                ->setParameter('idUtil', $idUtil)
                ->orderBy('a.statut')
                ->getQuery()
            ;
     
            return $qb->execute();
        }
    }

  3. #3
    Membre habitué Avatar de Skunka
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2018
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 135
    Points : 158
    Points
    158
    Par défaut
    Salut, j'ai corrigé mon code:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public function chargerListeAmi(int $idUtil){
            $qb = $this->_em->createQueryBuilder('a')
                ->andWhere('a.utilSource = :idUtil')
                ->setParameter('idUtil', $idUtil)
                ->orderBy('a.statut')
                ->getQuery()
            ;
     
            return $qb->execute();
        }

    Je reste sur la même erreur :/

    J'essaye également de faire ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public function chargerListeAmi(int $idUtil){
            return $this->_em->createQueryBuilder()
                ->select('a')
                ->from('ami' ,'a')
                ->where('a.utilSource = :idUtil')
                ->setParameter('idUtil', $idUtil)
                ->orderBy('a.statut')
                ->getQuery()
                ->getResult()
            ;
        }
    Mais j'ai cette erreur :
    [Semantical Error] line 0, col 14 near 'ami a WHERE a.utilSource': Error: Class 'ami' is not defined.
    Edit: je rajoute la structure de ma table `ami` au cas où:
    Nom : ami.JPG
Affichages : 222
Taille : 12,6 Ko
    Traverse les rues ...

    Git: https://github.com/BlueSkunka

    Débutant à vie

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 351
    Points : 582
    Points
    582
    Par défaut
    Si tu as toujours la même erreur, vérifie le type du paramètre que tu passes à ta fonction : dd($idUtil);
    Tu peux aussi utiliser le profiler de la "Web Debut Toolbar" pour voir quelles sont les requêtes SQL générées, ça peut aider à comprendre ce qui cloche.

  5. #5
    Membre habitué Avatar de Skunka
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2018
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 135
    Points : 158
    Points
    158
    Par défaut
    Le paramètre passé est correcte, c'est bien un Integer.

    La première fonction construit cette requête:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT WHERE a.utilSource = :idUtil ORDER BY a.statut ASC

    La seconde fonction construit cette requête:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT a FROM ami a WHERE a.utilSource = :idUtil ORDER BY a.statut ASC

    Du coup j'ai modifié de nouveau ma requête en DQL:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public function chargerListeAmi(int $idUtil){
            $query = $this->getEntityManager()->createQuery(
                'SELECT a
                FROM App\Entity\Ami a
                WHERE a.utilSource = :idUtil
                ORDER BY a.statut ASC'
            )->setParameter('idUtil', $idUtil);
     
            return $query->execute();
        }

    Celle ci fonctionne correctement en me retournant ma liste d'ami.
    Cependant, j'aimerais comprendre pourquoi les premières requêtes ne passent pas mais si tu n'as pas d'idée, ce n'est pas bien grave, je finirai par trouver !

    Merci de m'avoir encore aidé !

    Edit:
    J'ai compris ce qui n'allais pas de base, il fallait changer le from:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        public function chargerListeAmi(int $idUtil){
            return $this->_em->createQueryBuilder()
                ->select('a')
                ->from(Ami::class,'a')
                ->where('a.utilSource = :idUtil') // Appeler l'entité symfony et non la table sql
                ->setParameter('idUtil', $idUtil)
                ->orderBy('a.statut')
                ->getQuery()
                ->getResult()
            ;
        }
    Traverse les rues ...

    Git: https://github.com/BlueSkunka

    Débutant à vie

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. syntax error in number in query expression number and date in vb6
    Par siadli dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 01/09/2018, 15h14
  2. syntax error in number in query expression number and date in vb6
    Par siadli dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 23/02/2016, 09h29
  3. Syntax error
    Par vincedjs dans le forum Langage
    Réponses: 3
    Dernier message: 01/02/2006, 16h58
  4. Syntax Error / Questions
    Par kedare dans le forum Général Python
    Réponses: 15
    Dernier message: 12/09/2005, 14h05
  5. "vector" provoque "syntax error", malgré
    Par seenkay dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 24/08/2003, 03h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo