Zend框架:如何检索最后插入行的ID?

13

我正在使用以下代码将新行插入数据库:

$data = array(
    'key' => 'value'
);
$this->getDbTable()->insert($data);

如何获取刚创建的行的行ID?

4个回答

16

你尝试过这个吗?这也很好用。

//just after you call your insert($data) function .. use this
$lastInsertId = $this->getAdapter()->lastInsertId();

10

一个需要注意的地方是,在调用 $this->getDbTable()->insert($data); 方法时,你需要确保 $data 中包含了你的表的“主键”。比如,如果主键是自增的,那么就需要设置 id=null。否则,insert() 方法将无法返回最后插入的 ID。


2
请注意,此问题已在v1.11.6中标记为已解决。请参见http://framework.zend.com/issues/browse/ZF-3837。 - Marcin Orlowski

0

尝试以下代码:

插入数据:

$this->tableGateway->insert($data);

获取最后插入的值:

$this->tableGateway->lastInsertValue;

如果另一个用户在之后插入了一条记录,lastInsertValue会获取一般情况下或特定事务(如果使用)中最后插入的id吗? - Katia

0

还有一个newId函数,它返回下一个新的ID,因此您可以使用它来插入新行。

$id = $this->getDbTable->newId('table_name', 'id');

$data = array(
    'id' => $id,
    'data' => $data
);

$this->getDbTable->insertRow('table_name', $data);

现在你可以随心所欲地使用你的$id了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接