Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 21-09-2012 12:11:55

Rolf
Nouveau membre
Date d'inscription: 21-09-2012
Messages: 5

[Résolu][Zend_Db][1.11.7] Update global d'une colonne

Bonjour,

Je rencontre un problème d'update et ne sais pas vraiment comment y remédier...
Je cherche à reproduire l'équivalent de cette simple requête qui fonctionne parfaitement en ligne de commande dans ma base Mysql :

UPDATE `services` SET `left_side`=`left_side`+2 WHERE `left_side` >= '5';

... de sorte à ajouter 2 aux valeurs de cette fichue colonne...

J'ai étendu Zend_Db_Table_Abstract

J'ai testé tout un tas de possibilités comme celle qui me semblait la plus logique, c'est à dire :

Code:

        $Data = (array('left_side' => 'left_side' + 2));
        $whereClause = $this->getAdapter()->quoteInto('left_side >= ?', 5);
        $this->update($Data, $whereClause);

... mais $Data n'est pas correct...

L'un d'entre-vous a t'il une idée ?

Dernière modification par Rolf (21-09-2012 15:14:46)

Hors ligne

 

#2 21-09-2012 12:22:56

tdutrion
Administrateur
Lieu: Dijon, Paris, Edinburgh
Date d'inscription: 23-12-2009
Messages: 614
Site web

Re: [Résolu][Zend_Db][1.11.7] Update global d'une colonne

Pourquoi Data porte une majuscule ? (enfin bon c'est pas le sujet, mais c'est un array donc une variable, pas un objet...).

Sinon, pourquoi pas plutôt :

Code:

$Data = (array('left_side' => '`left_side` + 2'));

Le second membre est donc ainsi une expression, les `permettent de définir qu'il s'agit d'une colonne...

Je n'ai pas testé par contre... Il faut peut être ajouter un Zend_Db_Expr() autour de la valeur dans ton array.

Hors ligne

 

#3 21-09-2012 14:45:17

Rolf
Nouveau membre
Date d'inscription: 21-09-2012
Messages: 5

Re: [Résolu][Zend_Db][1.11.7] Update global d'une colonne

Merci Théocrite !

$Data s'appelait auparavant $aData ... oublié de corriger wink

J'ai testé avec les backticks comme tu proposes, puis entouré de guillemets simples, les valeurs de la colonne sont changées en zéro.

J'ai testé également Zend_Db_Expr() comme ceci si j'ai bien compris :

Code:

$aData = (array('left_side' => new Zend_Db_Expr(`left_side` + 2)));
$whereClause = $this->getAdapter()->quoteInto('left_side >= ?', 5);
$this->update($aData, $whereClause);

... seule la valeur 2 est prise en compte. Du coup les valeurs de la colonne sont changées en 2.

Il doit bien y avoir une solution ? Je ne pensais pas galérer autant pour une requête aussi simple sad

Dernière modification par Rolf (21-09-2012 14:52:24)

Hors ligne

 

#4 21-09-2012 14:52:28

tdutrion
Administrateur
Lieu: Dijon, Paris, Edinburgh
Date d'inscription: 23-12-2009
Messages: 614
Site web

Re: [Résolu][Zend_Db][1.11.7] Update global d'une colonne

Il manque des guillemets dans ton expression :

Code:

$aData = (array('left_side' => new Zend_Db_Expr('`right_side` + 2')));

Hors ligne

 

#5 21-09-2012 15:04:24

amiss
Membre
Lieu: Cesson-Sévigné
Date d'inscription: 08-05-2011
Messages: 115

Re: [Résolu][Zend_Db][1.11.7] Update global d'une colonne

bonjour,
voilà comme s'y prendre avec Zend_Db_Expr()

Code:

[lang=php]
$Data =array(
         'left_side'=>new Zend_Db_Expr('left_side+10')
);

Dernière modification par amiss (21-09-2012 15:07:27)

Hors ligne

 

#6 21-09-2012 15:06:35

Rolf
Nouveau membre
Date d'inscription: 21-09-2012
Messages: 5

Re: [Résolu][Zend_Db][1.11.7] Update global d'une colonne

Yeah ! Cela fonctionne !

THEOCRITE, MERCI !!! T'es un chef !

Dernière modification par Rolf (21-09-2012 15:08:04)

Hors ligne

 

#7 21-09-2012 15:11:39

Rolf
Nouveau membre
Date d'inscription: 21-09-2012
Messages: 5

Re: [Résolu][Zend_Db][1.11.7] Update global d'une colonne

amiss a écrit:

bonjour,
voilà comme s'y prendre avec Zend_Db_Expr()

Code:

[lang=php]
$Data =array(
         'left_side'=>new Zend_Db_Expr('left_side+10')
);

Bonjour amiss, malheureusement left_side n'est pas reconnu comme nom de colonne si tu ne l'entoures pas de backticks...

Code:

[lang=php]
$Data =array(
         'left_side'=>new Zend_Db_Expr('`left_side`+10')
);

... est la solution.

Hors ligne

 

#8 21-09-2012 15:33:52

amiss
Membre
Lieu: Cesson-Sévigné
Date d'inscription: 08-05-2011
Messages: 115

Re: [Résolu][Zend_Db][1.11.7] Update global d'une colonne

Rolf, c'est bizarre ça toujours marché sur mon serveur(linux) sans backticks. J'étais un peu naïf de croire que Zend_Db_Expr ajoutait des backticks comme le fait souvent Zend_Db sur les requêtes.En tout cas merci pour l'info.

Hors ligne

 

#9 21-09-2012 15:56:01

Rolf
Nouveau membre
Date d'inscription: 21-09-2012
Messages: 5

Re: [Résolu][Zend_Db][1.11.7] Update global d'une colonne

amiss a écrit:

Rolf, c'est bizarre ça toujours marché sur mon serveur(linux) sans backticks. J'étais un peu naïf de croire que Zend_Db_Expr ajoutait des backticks comme le fait souvent Zend_Db sur les requêtes.En tout cas merci pour l'info.

... oui, c'est curieux, il y a forcément une raison, mais laquelle ??? En tout ca il n'y a que de cette façon que cela fonctionne pour moi (MAMP).

(Suis originaire de Châteaubourg wink )

Hors ligne

 

#10 25-09-2012 12:41:05

amiss
Membre
Lieu: Cesson-Sévigné
Date d'inscription: 08-05-2011
Messages: 115

Re: [Résolu][Zend_Db][1.11.7] Update global d'une colonne

nous sommes alors voisins smile

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages