4

执行插入语句后,我需要最后一个插入 ID。现在我没有使用 TableGateway,所以我无法使用$this->lastInsertValue。如果我需要通过 Sql 对象而不是表网关对象使用 Insert 语句,还有哪些其他选项可用。

$objInsert = new Insert('name_master');
$objInsert->values(array( 'username' => $name,
                'price' => 0,
                'is_approval_needed' => 'n'
             ));

$sql = new Sql($this->adapter);

$result = $sql->prepareStatementForSqlObject($objInsert)->execute()->getAffectedRows();

由于我需要使用上一个插入的最后一个插入 id 在不同的表中执行多个插入语句,所以现在我想在我的模型的单个方法中执行它。

4

2 回答 2

14

Zend\Db\Adapter\Driver\DriverInterface指定了一个getLastGeneratedValue()方法,所以大概这应该工作......

 $lastId = $this->adapter->getDriver()->getLastGeneratedValue();
于 2013-03-11T14:48:45.920 回答
1
$dbAdapter = $this->tableGateway->adapter;
$lastId = $dbAdapter->getDriver()->getConnection()->getLastGeneratedValue();
于 2013-08-07T07:12:10.133 回答