Zend Framework 2 PostgreSQL lastInsertValue returns 空
Zend Framework 2 PostgreSQL lastInsertValue returns null
我有向 table 插入数据的代码。这是我的代码:
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 class 之间存在一些差异,zf2 包装并提供 tableGateway。
使用本机 php PDO,您可能需要执行以下操作:
"INSERT INTO tbl_table (table_name) values ('foo') RETURNING table_id;"
我有向 table 插入数据的代码。这是我的代码:
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 class 之间存在一些差异,zf2 包装并提供 tableGateway。
使用本机 php PDO,您可能需要执行以下操作:
"INSERT INTO tbl_table (table_name) values ('foo') RETURNING table_id;"