Problème erreur symfony2

Résolu/Fermé
petio - Modifié par petio le 13/09/2016 à 09:25
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 - 14 sept. 2016 à 11:47
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 38321 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 décembre 2024 4 707
13 sept. 2016 à 09:35
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
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 38321 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 décembre 2024 4 707
13 sept. 2016 à 10:35
Sans certitude.... ne serait-ce pas ":" qu'il faut utiliser au lieu "." ?
ici :
 ->join('instance_parameter:instance', 'instance')
0
petio > jordane45 Messages postés 38321 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 décembre 2024
13 sept. 2016 à 10:44
Les jointures se font avec "." et non ":" sur Symfony ;)
0
jordane45 Messages postés 38321 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 décembre 2024 4 707 > petio
13 sept. 2016 à 10:54
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 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
13 sept. 2016 à 11:11
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
ThEBiShOp,

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

Par contre je vois pas pourquoi ça fonctionnait pas :/
0
jordane45 Messages postés 38321 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 décembre 2024 4 707 > petio
14 sept. 2016 à 10:27
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 38321 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 décembre 2024
Modifié par petio le 14/09/2016 à 10:36
J'avais mal compris .. Excuse moi .. !
L'exemple de ThEBiShOp est plus parlant qu'une phrase
0
jordane45 Messages postés 38321 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 décembre 2024 4 707 > petio
14 sept. 2016 à 10:40
C'est pas faux :-)
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
14 sept. 2016 à 11:47
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