我被Zend framework 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());值正在插入到表中,但每一行(第一行除外,它提供int "1")都返回null。请不要告诉我,这么大的框架不可能获得最后插入的id值!?
发布于 2013-06-09 03:41:12
下面是我使用的代码:
$data = array()// Your data to be saved;
$this->tableGateway->insert($data);
$id = $this->tableGateway->lastInsertValue;发布于 2014-06-05 01:43:37
我知道这是很久以前的事了,但是在花了大量的时间在这个特定的问题上之后,我想把这个解决方案发布给将来遇到同样问题的谷歌用户。
问题是Pgsql驱动程序需要一个序列名称来返回最后一个id,如下所示:
$adapter->getDriver()->getLastGeneratedValue("sequence_name");这在2.3.1中有效。在2.2.2 (以及更高版本)中存在一个错误,其中名称不是驱动程序中getLastGeneratedValue的参数,因此您必须直接调用连接。
$adapter->getDriver()->getConnection()->getLastGeneratedValue这就是我通过查看代码发现的。最好的解决方案是确保您的ZF2已更新,并使用
$adapter->getDriver()->getLastGeneratedValue("sequence_name");发布于 2013-04-21 01:40:41
在postgres中,你需要设置SequenceFeature:
...
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();应该可以工作了。
https://stackoverflow.com/questions/15908065
复制相似问题