Page 1 sur 1

[Symfony2] Requête SQL avec createQueryBuilder()

Posté : 31 oct. 2012, 01:23
par Texicitys
Bonjour à tous !

J'ai créer un formHandler pour un formulaire qui gérerait des domaines..

J'ai un problème dans les requêtes que j'envoie à la base de donnée. J'utilise createQueryBuilder pour gérer des modifications assez complexe..

Voici un bout de code de mon Handler :
<?php
switch ($mode) {
                case 'FA': // Insertion d'un fils ainé
// Limite sup.
                    $p = $em->createQueryBuilder()
                            ->update('CollaideDomainBundle:Domain', 'd')
                            ->set('d.right', 'd.right + 2')
                            ->where('d.right > :v')
                            ->setParameter('v', $bgp)
                            ->getQuery()
                            ->execute();

Lorsque ce code est exécuté, j'obtiens le message suivant :
An exception occurred while executing 'UPDATE Domain SET right = right + 2 WHERE right > ?' with params {"1":1}:

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'right = right + 2 WHERE right > 1' at line 1
500 Internal Server Error - DBALException

1 linked Exception: PDOException »
C'est vraiment bizarre, car c'est symfony2 qui gère la requête. Il manque les '' dans cette requête (pour qu'elle passe sans problème).

Merci d'avance si vous avez une idée pour corriger ce problème.

Re: [Symfony2] Requête SQL avec createQueryBuilder()

Posté : 12 nov. 2012, 21:25
par Yosh
Essaye de récupérer la query et de la tester dans ton SGBD...

EDIT: pas vu la query ^^, et avec des parenthèse ? ce serait pas mieux ?
 SET right = (right + 2)
EDIT2: autant pour moi, il me semble que la plupart des SGBD utilise RIGHT comme mot réservé, non ? essaye en renommant ton champ.

Re: [Symfony2] Requête SQL avec createQueryBuilder()

Posté : 13 nov. 2012, 09:50
par Texicitys
Hello !

Merci pour ta réponse. Je viens, hier soir, de réalisé que le problème venait bien de la je pense. C'est le fait que right et left soit réservé.
Je vais donc modifier tout ça..

Merci beaucoup pour ta réponse, je vous tiens au courant (mais je pense que ça vient de là).

Re: [Symfony2] Requête SQL avec createQueryBuilder()

Posté : 15 nov. 2012, 13:40
par Texicitys
Au final j'ai décidé de partir sur un framework beaucoup plus simple, j'avais trop de problème avec symfony2. Et je déteste quand des choses ne fonctionnent pas sans que je ne sache pourquoi... (je ne parle pas pour ce problème en particulier, mais une accumulation). Merci en tout cas pour ton aide.