我有将数据插入表的代码。这是我的代码:
public function createPage(Pages $page)
{
$data = array(
'page_name' => $page->page_name,
'parent_page_id' => $page->parent_page_id,
'category' => $page->category,
'create_date' => $page->create_date,
);
try {
$id = $this->tableGateway->insert($data);
$id = $this->tableGateway->lastInsertValue;
} catch (Exception $ex) {
throw new Exception($ex->getMessage());
}
return $id;
}
当我使用MySql
时,我得到了行的id,但使用PostgreSQL
时,我获得了null
。
是,
$id = $this->tableGateway->getAdapter()->getDriver()->getLastGeneratedValue("sequence_name");
或
$id = $this->tableGateway->getAdapter()->getConnection()->getLastGeneratedValue
取决于您的zf2版本。
然而,Postgresql和MySql使用原生php-PDO类有一些不同,zf2封装并提供tableGateway。
使用原生php-PDO,您可能需要执行以下操作:
"INSERT INTO tbl_table (table_name) values ('foo') RETURNING table_id;"