2015-05-07 1 views
0

Возможно ли передать в базу данных следующий sql-запрос с использованием tableGateway, если да, то как бы выглядела такая команда?Zendframework 2 postgresql update с «not»

UPDATE table_data SET active = not active where table_data.id = 12; 

ответ

0

Вы должны использовать Zend\Db\Sql\Expression, этот класс говорит Zend\Db, что вы знаете, что вы делаете, и что содержание строки, переданной в этот класс не должен быть преобразован, а используется как есть.

// build the table gateway object 
$adapter = $this->getServiceLocator()->get('Zend\Db\Adapter\Adapter'); 
$tableIdentifier = new TableIdentifier('table_data', 'public'); 
$tableGateway = new TableGateway($tableIdentifier, $adapter); 

// create the filter 
$where = new \Zend\Db\Sql\Where(); 
$where->equalTo('id', '12'); 

// update table 
$tableGateway->update(
    ['active' => new \Zend\Db\Sql\Expression('not active')], 
    $where 
);