在ZF2中,插入后获取最后一个插入ID而不使用TableGateway

时间:2013-03-11 13:51:49

标签: zend-framework2

执行insert语句后我需要最后一个插入ID。现在我没有使用TableGateway,因此我无法使用$this->lastInsertValue。如果我需要通过Sql Object而不是Table Gateway Object使用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在不同的表中执行多个插入语句,现在我想在我的模型的单个方法中执行它。

2 个答案:

答案 0 :(得分:14)

Zend\Db\Adapter\Driver\DriverInterface指定getLastGeneratedValue()方法,所以大概应该可行...

 $lastId = $this->adapter->getDriver()->getLastGeneratedValue();

答案 1 :(得分:1)

$dbAdapter = $this->tableGateway->adapter;
$lastId = $dbAdapter->getDriver()->getConnection()->getLastGeneratedValue();