Problème erreur symfony2

Résolu
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. Modérateur
    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. 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. Modérateur
      Sans certitude.... ne serait-ce pas ":" qu'il faut utiliser au lieu "." ?
      ici :
       ->join('instance_parameter:instance', 'instance')
      
      0
    3. @jordane45Les jointures se font avec "." et non ":" sur Symfony ;)
      0
    4. Modérateur
      @petioOui en effet.

      Alors peut être que le souci vient du mot 'instance' qui est un mot réservé en SQL
      0
  2. Contributeur
    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. ThEBiShOp,

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

      Par contre je vois pas pourquoi ça fonctionnait pas :/
      0
    2. Modérateur
      @petioComme je te l'ai indiqué .... "instance" doit être un mot RESERVE !
      Donc en utilisant "i" au lieu de INSTANCE ...ça marche mieux.....
      0
    3. @jordane45J'avais mal compris .. Excuse moi .. !
      L'exemple de ThEBiShOp est plus parlant qu'une phrase
      0
    4. Modérateur
      @petioC'est pas faux :-)
      0
    5. Contributeur
      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