[RESOLU] [Symfony2] Requête SQL avec createQueryBuilder()

Eléphant du PHP | 82 Messages

31 oct. 2012, 01:23

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.

Mammouth du PHP | 568 Messages

12 nov. 2012, 21:25

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.

Eléphant du PHP | 82 Messages

13 nov. 2012, 09:50

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à).

Eléphant du PHP | 82 Messages

15 nov. 2012, 13:40

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.