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;"