Signaler

Problème erreur symfony2 [Résolu]

Posez votre question petio - Dernière réponse le 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
Afficher la suite 
Utile
+0
moins plus
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.

petio- 13 sept. 2016 à 09:47
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;
    }
Répondre
jordane45 14530Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 23 septembre 2016 Dernière intervention - 13 sept. 2016 à 10:35
Sans certitude.... ne serait-ce pas ":" qu'il faut utiliser au lieu "." ?
ici :
 ->join('instance_parameter:instance', 'instance')
Répondre
petio- 13 sept. 2016 à 10:44
Les jointures se font avec "." et non ":" sur Symfony ;)
Répondre
jordane45 14530Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 23 septembre 2016 Dernière intervention - 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
Répondre
Ajouter un commentaire
Utile
+0
moins plus
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 ?
petio- 14 sept. 2016 à 10:24
ThEBiShOp,

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

Par contre je vois pas pourquoi ça fonctionnait pas :/
Répondre
jordane45 14530Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 23 septembre 2016 Dernière intervention - 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.....
Répondre
petio- 14 sept. 2016 à 10:35
J'avais mal compris .. Excuse moi .. !
L'exemple de ThEBiShOp est plus parlant qu'une phrase
Répondre
jordane45 14530Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 23 septembre 2016 Dernière intervention - 14 sept. 2016 à 10:40
C'est pas faux :-)
Répondre
ThEBiShOp 8336Messages postés jeudi 22 mars 2007Date d'inscription ContributeurStatut 23 septembre 2016 Dernière intervention - 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.
Répondre
Ajouter un commentaire

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !