2009-12-04 4 views
2

Comment est-ce que j'écrirais ce SQL le Zend Framework?Zend Framework SQL requête de mise à jour

UPDATE register 
SET balance = (balance + 10) 
WHERE added_date > 1259944184 ; 

Je ne trouve aucun exemple de cela sur le site Web de Zend ou sur le Web.

Dois-je utiliser "Zend_Db_Expr"?

Répondre

1

acording à zend documentation framwork

utilisent ce

$data = array(
    'balance'  => 'balance + 10' 
); 

$n = $db->update('register ', $data, 'added_date > 1259944184'); 
+0

Cela ne fonctionne pas pour moi. Je l'ai fait en utilisant une requête sql comme ceci: $ stmt = $ this -> _ db-> requête ('UPDATE'. $ This -> _ nom. 'SET balance = (balance + \' '. $ Différence.' \ ') O added added_date> \' '. $ AddedDate.' \ ''); \t \t $ numAdded = $ stmt-> rowCount(); \t \t echo '
'. $ NumAdded. ' Lignes affectées '; Mais je veux vraiment utiliser la méthode fluide de ZF. – EricP

3

Cela a fonctionné pour moi:

$data = array(balance => new Zend_DB_Expr('balance + 10')); 

$db->update('register ', $data, 'added_date > 1259944184'); 
1

Essayez ceci ... assurez-vous que votre modèle est prêt.

$table = new register();

C'est la classe modèle

balance=balance+10;

$data = array( 'balance' => 'balance' );

$where = $table->getAdapter()->quoteInto('added_date > '. 1259944184);

Vous pouvez utiliser $ où [] pour de multiples conditions

$table->update($data, $where);

For more details follow link

0

J'ai utilisé cette modifier l'ordre des éléments en haut. code comme suit à partir de la classe de table à rallonge Zend_Db_Table_Abstract:

$data = array('i_order' => new Zend_DB_Expr('i_order + 1')); 

return $this->getAdapter()->update($this->_name, $data, "i_id != {$oCurrent->i_id} AND i_order < {$i_order}");