2009-12-08 91 views

回答

10

一个问题。当调用$this->getDbTable()->insert($data);时,您必须确保$ data包含表的“主键”。例如,如果它是自动增量,则为id=null。否则,insert()将不会返回上次插入的ID。

+0

谢谢聪 - 这救了我 - – Andre 2012-03-19 13:13:48

+2

有一点需要注意的是,这已经在v1.11.6标记为已修复。请参见http://framework.zend.com/issues/browse/ZF-3837 – 2012-08-05 18:12:38

15

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

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

支票投票人thanx – 2012-04-04 10:12:54

0

试试下面的代码:

要插入数据:

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

获取上次插入值:

$this->tableGateway->lastInsertValue; 
+0

如果另一个用户在之后插入记录,lastInsertValue将获得最后插入的id,或者用于某些事务。 - ? – Katia 2014-05-23 18:28:09

0

还有newId功能,女巫返回下一个新的ID ,所以你可以用它来插入一个新的行。现在

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

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

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

你可以做任何你想要与你的$id