ZF2 如何获取上次插入 ID 值?

我被困在使用Zend框架2获取最后一个插入ID上,我放弃了这个...

有尝试的组合:

var_dump($this->tableGateway->insert($insert));
var_dump($this->tableGateway->lastInsertValue);
var_dump($this->tableGateway->getLastInsertValue());
var_dump($this->tableGateway->getAdapter()->getDriver()->getConnection()->getLastGeneratedValue());

值正在插入到表中,但每行(除了 first,它给出 int “1”)都返回 null。请不要告诉我,这么大的框架没有提供获得最后插入id值的可能性!?


答案 1

这是我使用的:

$data = array()// Your data to be saved;
$this->tableGateway->insert($data);
$id = $this->tableGateway->lastInsertValue;

答案 2

我知道这是很久以前的事了,但是在花了大量时间在这个特定问题上之后,我想为遇到同样问题的未来Google员工发布解决方案。

问题是 Pgsql 驱动程序需要序列的名称才能返回最后一个 id,如下所示:

$adapter->getDriver()->getLastGeneratedValue("sequence_name");

这在 2.3.1 中有效。在 2.2.2(可能更晚)中存在一个错误,其中 name 不是驱动程序中 getLastGeneratedValue 的参数,因此您必须直接调用连接。

$adapter->getDriver()->getConnection()->getLastGeneratedValue

这就是我通过查看代码发现的。最好的解决方案是确保您已更新 ZF2,并使用

$adapter->getDriver()->getLastGeneratedValue("sequence_name");

推荐