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 :

Problème au niveau du requête DQL [2.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 23
    Par défaut Problème au niveau du requête DQL
    Bonjour,

    j'ai un problème qui me perturbe pendant un moment, et j'ai pas trouvé la solution adéquate pour le régler :
    - Mon problème est plus simplement cette message "[Syntax Error] line 0, col 27: Error: Expected Doctrine\ORM\Query\Lexer::T_FROM, got '.' "

    - ce message conçerne cette instruction :
    $query = $em->createQuery("SELECT sessionVille.frmSession.formation.libelle as libelle, sessionVille.frmSession.dateDebut, sessionVille.frmSession.dateFin, sessionVille.emplacement.ville.libelle FROM itCertifFormationBundle:FrmSessionVille sessionVille");

    - d'après ce que j'ai compris de cette erreur , DQL n'accepte pas 'sessionVille.frmSession.formation.libelle' car cette expression a plusieurs '.'


    - si quelqu'un a une idée sur ce problème , merci de m'aider à le résoudre SVP

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Par défaut
    t'as vraiment un champs qui s'appelle sessionVille.frmSession.formation.libelle ?
    car ca a l'air vraiment très crado

  3. #3
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 23
    Par défaut
    Bonjour,

    Voici une partie d'analyse du projet que je suis en train de le réaliser en utilisant le framework symfony2

    http://www.hostingpics.net/viewer.ph...agramclass.png

    et je veux afficher la liste des sessions_villes en incluant le libellé de formation alors je trouve 'sessionVille.frmSession.formation.libelle' est plutôt logique comme manière de récupérer ce libellé , mais l'erreur décrit précédemment m'a bloqué, et je veux régler ce problème le plus vite possible,

    SVP, quelqu'un a une solution pour cette catastrophe

  4. #4
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 98
    Par défaut
    De ce que j'ai vu sur ton UML,
    tu as 3 entités

    Formation:
    id_ville
    autre

    Ville:
    id_ville
    autre

    session:
    id_formation
    id_ville
    date_debut
    date_fin

    avec des relations OneToMany et ManyToOne.
    ta classe FrmSessionVille j'ai du mal à comprendre ce qu'elle fait.

  5. #5
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 23
    Par défaut
    la classe FrmSessionVille est une classe qui contient tout les informations du session de formation(dateDebut,dateFin) ainsi que le lieu de cette session (ville)
    et j'ai créé cette classe car un client doit s'inscrire dans une session qui se trouve dans une ville,

    voici la représentation graphique du fonctionnement du FrmSessionVille

    http://www.hostingpics.net/viewer.ph...agramclass.png

  6. #6
    Membre émérite
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Par défaut
    bonjour,

    - ce message conçerne cette instruction :
    $query = $em->createQuery("SELECT sessionVille.frmSession.formation.libelle as libelle, sessionVille.frmSession.dateDebut, sessionVille.frmSession.dateFin, sessionVille.emplacement.ville.libelle FROM itCertifFormationBundle:FrmSessionVille sessionVille");

    - d'après ce que j'ai compris de cette erreur , DQL n'accepte pas 'sessionVille.frmSession.formation.libelle' car cette expression a plusieurs '.'
    Le dql ne permet pas de chainer les attributs de cette façon, il n'accepte qu'un seul "." dans une expression,
    Il faut utiliser les jointures
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT formation.libelle, session.dateDebut, session.dateFin, ville.libelle 
    FROM itCertifFormationBundle:FrmSessionVille sessionVille
    JOIN sessionVille.formSession session
    JOIN session.formation formation
    JOIN sessionVille.emplacement emplacement
    JOIN emplacement.ville ville

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

Discussions similaires

  1. [MySQL-5.0] problème au niveau de requête sql
    Par zizou1989 dans le forum Requêtes
    Réponses: 1
    Dernier message: 11/05/2013, 15h09
  2. [1.x] Probléme au niveau d'une requête DQL
    Par simolewestside dans le forum Symfony
    Réponses: 1
    Dernier message: 27/12/2012, 12h31
  3. Réponses: 3
    Dernier message: 21/07/2008, 11h55
  4. problème au niveau de ma requête?
    Par lesultan2007 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 26/06/2008, 08h50
  5. [Oracle] Problème au niveau d'une requête et de l'utilisation de son résultat
    Par LethaL86 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 04/09/2007, 14h31

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