2012-06-05 20 views
2

我试着做类似这样与Zend_Db的更新:ZF Db的附加列

UPDATE `TABLE` SET 
    column = column + 'new value' 
WHERE 
    foo = 'bar' 

任你以前做过吗?可能吗? 谢谢

回答

2

Zend_Db_Expr的帮助下,这是可能的。

例子:

$newValue = 101; 
$data  = array('column' => 
        new Zend_Db_Expr($db->quoteInto('column + ?', $newValue))); 
$where = $db->quoteInto('foo = ?', 'bar'); 

$updated = $db->update('TABLE', $data, $where); 

结果查询:

UPDATE `TABLE` SET `column` = `column` + 101 WHERE `foo` = 'bar'; 

如果你问如何追加一个字符串,那么代码是相似的,但人物打交道时,你不能使用+操作数据,而不是使用CONCAT()

例如,改变$data阵列这样:

$data = array('varcharCol' => 
       new Zend_Db_Expr(
        $db->quoteInto('CONCAT(varcharCol, ?)', ' append more text!') 
     )); 
+0

外观极好,这正是我specting。我知道它与'Zend_Db_Expr()'有关,但不知道如何实现它 –