Problème erreur symfony2

Résolu
petio -  
ThEBiShOp Messages postés 9307 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'ai une erreur sur Symfony qui ai apparut et je ne la comprends pas malgré des recherches sur internet et divers forum ...

Voici l'erreur :

[Syntax Error] line 0, col 147: Error: Expected Doctrine\ORM\Query\Lexer::T_INSTANCE, got '.'

Auriez-vous une idée ?

Merci

2 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Bonjour,
    Je ne fais pas de Synfony... mais visiblement cela se produit sur une requête en particulier...
    il faudrait que tu nous montres le code qui génère cette erreur.

    0
    1. petio
       
      public function getParametersForInstance($instance_id){
              $result = $this->createQueryBuilder('instance_parameter')
                             ->join('instance_parameter.instance', 'instance')
                             ->where('instance.id = :instance_id')
                             ->setParameter('instance_id', $instance_id)
                             ->getQuery()->getResult();
              return $result;
          }
      
      0
    2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      Sans certitude.... ne serait-ce pas ":" qu'il faut utiliser au lieu "." ?
      ici :
       ->join('instance_parameter:instance', 'instance')
      
      0
      1. petio > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Les jointures se font avec "." et non ":" sur Symfony ;)
        0
      2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > petio
         
        Oui en effet.

        Alors peut être que le souci vient du mot 'instance' qui est un mot réservé en SQL
        0
  2. ThEBiShOp Messages postés 9307 Date d'inscription   Statut Contributeur Dernière intervention   1 606
     
    Si tu fais :

            $result = $this->createQueryBuilder('ip')
                           ->join('ip.instance', 'i')
                           ->where('i.id = :instance_id')
                           ->setParameter('instance_id', $instance_id)
                           ->getQuery()->getResult();
            return $result;


    est-ce que ça change quelque chose ?
    0
    1. petio
       
      ThEBiShOp,

      Oui c'est bon merci beaucoup !!! :)

      Par contre je vois pas pourquoi ça fonctionnait pas :/
      0
      1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > petio
         
        Comme je te l'ai indiqué .... "instance" doit être un mot RESERVE !
        Donc en utilisant "i" au lieu de INSTANCE ...ça marche mieux.....
        0
      2. petio > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
         
        J'avais mal compris .. Excuse moi .. !
        L'exemple de ThEBiShOp est plus parlant qu'une phrase
        0
      3. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > petio
         
        C'est pas faux :-)
        0
    2. ThEBiShOp Messages postés 9307 Date d'inscription   Statut Contributeur Dernière intervention   1 606
       
      De façon plus générale, dans tes query, utilise des alias, ça va peut être te sembler moins explicite au début, mais c'est plus rapide à lire et à écrire.

      Par ailleurs, tu as de la chance que tu n'aies pas de soucis ailleurs avec ton nom d'entité, j'avais eu un problème similaire avec un nom de champ, je me souviens plus lequel, mais c'était une instruction php, du coup, mon code partait en cacahuètes.
      0