Zendframework 2 postgresql更新与“不”

时间:2015-05-07 12:32:06

标签: postgresql zend-framework2 tablegateway

是否可以使用tableGateway将以下sql查询传递给数据库,如果是这样,这样的命令会是什么样的?

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

1 个答案:

答案 0 :(得分: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
);