Я пытаюсь сделать универсальное обновление / своп, который всегда переключал бы активный статус. В SQL все просто:
UPDATE contacts SET active = ABS( active - 1 ) WHERE id = ....
Там, где активным является маленький int / flag 0 или 1, поэтому он всегда работает.
Когда я пытаюсь реализовать его для расширения класса модели Zend_Db_Table:
public function disableContact( $contact_id )
{
$where = $this->getAdapter( )->quoteInto( 'id = ?', $contact_id );
$data = Array( );
$data ['active'] = '(ABS( the.contacts.active - 1 ))';
return parent::update( $data, $where );
}
Я получил Error: SQLSTATE[22P02]: Invalid text representation: 7 ERROR: invalid input syntax for integer: "(ABS( the.contacts.active - 1 ))"<p><pre>#0 ......./ZendFramework-1.11.0/library/Zend/Db/Statement.php(300): Zend_Db_Statement_Pdo->_execute(Array)
Как передать выражение ABS для обновления?