2009-12-04 145 views
2

我該如何編寫這個SQL Zend Framework的方式?Zend Framework SQL更新查詢

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

我在Zend的網站或網上找不到任何這方面的例子。

我需要使用「Zend_Db_Expr」嗎?

回答

1

acording到Zend的framwork文檔

使用本

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

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

這並不適用於我。我得到它使用這樣的SQL查詢: $ stmt = $ this - > _ db-> query('UPDATE'。$ this - > _ name。'SET balance =(balance + \''。$ difference。'\ ')WHERE added_date> \''。$ addedDate。'\''); \t \t $ numAdded = $ stmt-> rowCount(); \t \t echo'
'。$ numAdded。'受影響的行'; 但我真的很想使用ZF的流體方法。 – EricP 2009-12-04 22:18:44

3

這爲我工作:

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

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

試試這個...確保您的模型已準備就緒。

$table = new register();

這是模型類

balance=balance+10;

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

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

我用這其中[]多個條件

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

For more details follow link

0

修改元素爲頂部,你可以使用$。 代碼如下從表類延伸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}");