2011-09-19 19 views
8

¿Hay alguna manera de hacer lo que hace el siguiente código, usando Zend_Db_Table_Abstract?Zend Framework MySQL Update Column

UPDATE table SET value=value+1 WHERE value < 10; 

he intentado algo así como:

$tableModel->update(array('value=value+1'),'value<10'); 

pero sin éxito.

Pude obtener los datos en un SELECT y luego solo agregué 1 a eso, pero esa no es una opción, porque es muy lento.

Respuesta

11

La primera matriz de argumentos es una asignación asociativa de columnas y valores. Si no está utilizando un valor absoluto, es decir, si desea usar una expresión o función, necesita usar Zend_Db_Expr. Lo siguiente debe incrementar la columna 'valor' de cualquier fila con un valor actual bajo 10.

$tableModel->update(array(
    'value' => new Zend_Db_Expr('value + 1') 
), 'value < 10');