2009-12-04 7 views
2

Как я могу написать этот метод SQL Zend Framework?Zend Framework SQL-запрос на обновление

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

Я не могу найти примеров этого на веб-сайте Zend или в Интернете.

Нужно ли использовать "Zend_Db_Expr"?

ответ

1

acording документации framwork ZEND

использование этого

$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. ' Rows Affected '; Но я действительно хочу использовать жидкий метод ZF. – EricP

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}");