Problème erreur symfony2

Résolu
petio -  
ThEBiShOp Messages postés 8411 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

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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
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
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Sans certitude.... ne serait-ce pas ":" qu'il faut utiliser au lieu "." ?
ici :
 ->join('instance_parameter:instance', 'instance')
0
petio > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
Les jointures se font avec "." et non ":" sur Symfony ;)
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > petio
 
Oui en effet.

Alors peut être que le souci vient du mot 'instance' qui est un mot réservé en SQL
0
ThEBiShOp Messages postés 8411 Date d'inscription   Statut Contributeur Dernière intervention   1 566
 
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
petio
 
ThEBiShOp,

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

Par contre je vois pas pourquoi ça fonctionnait pas :/
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > 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
petio > jordane45 Messages postés 38486 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
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > petio
 
C'est pas faux :-)
0
ThEBiShOp Messages postés 8411 Date d'inscription   Statut Contributeur Dernière intervention   1 566
 
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