首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ZF2如何获取上次插入的id值?

ZF2如何获取上次插入的id值?
EN

Stack Overflow用户
提问于 2013-04-10 01:03:13
回答 7查看 25.1K关注 0票数 17

我被Zend framework 2的最后一次插入id卡住了,我放弃了……

这里有一些尝试过的组合:

代码语言:javascript
运行
复制
var_dump($this->tableGateway->insert($insert));
var_dump($this->tableGateway->lastInsertValue);
var_dump($this->tableGateway->getLastInsertValue());
var_dump($this->tableGateway->getAdapter()->getDriver()->getConnection()->getLastGeneratedValue());

值正在插入到表中,但每一行(第一行除外,它提供int "1")都返回null。请不要告诉我,这么大的框架不可能获得最后插入的id值!?

EN

回答 7

Stack Overflow用户

发布于 2013-06-09 03:41:12

下面是我使用的代码:

代码语言:javascript
运行
复制
$data = array()// Your data to be saved;
$this->tableGateway->insert($data);
$id = $this->tableGateway->lastInsertValue;
票数 28
EN

Stack Overflow用户

发布于 2014-06-05 01:43:37

我知道这是很久以前的事了,但是在花了大量的时间在这个特定的问题上之后,我想把这个解决方案发布给将来遇到同样问题的谷歌用户。

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

代码语言:javascript
运行
复制
$adapter->getDriver()->getLastGeneratedValue("sequence_name");

这在2.3.1中有效。在2.2.2 (以及更高版本)中存在一个错误,其中名称不是驱动程序中getLastGeneratedValue的参数,因此您必须直接调用连接。

代码语言:javascript
运行
复制
$adapter->getDriver()->getConnection()->getLastGeneratedValue

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

代码语言:javascript
运行
复制
$adapter->getDriver()->getLastGeneratedValue("sequence_name");
票数 9
EN

Stack Overflow用户

发布于 2013-04-21 01:40:41

在postgres中,你需要设置SequenceFeature:

代码语言:javascript
运行
复制
...
use Zend\Db\TableGateway\Feature;
...
public function setDbAdapter( Adapter $adapter ) {
   ...
   $this->featureSet = new Feature\FeatureSet();
   $this->featureSet->addFeature(new Feature\SequenceFeature('YOUR_FIELD_NAME','YOUR_SEQUENCE_NAME'));
   $this->initialize();
}

现在$this->tableGateway->getLastInsertValue();应该可以工作了。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15908065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档