2012-06-05 2 views
2

Im пытается сделать обновление, похожее на это с Zend_Db:ZF Db Append к колонке

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

Отлично, это именно то, что я был сматривая. Я знал, что это имеет какое-то отношение к 'Zend_Db_Expr()', но не знало, как его реализовать –