执行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在不同的表中执行多个插入语句,现在我想在我的模型的单个方法中执行它。
答案 0 :(得分:14)
Zend\Db\Adapter\Driver\DriverInterface
指定getLastGeneratedValue()
方法,所以大概应该可行...
$lastId = $this->adapter->getDriver()->getLastGeneratedValue();
答案 1 :(得分:1)
$dbAdapter = $this->tableGateway->adapter;
$lastId = $dbAdapter->getDriver()->getConnection()->getLastGeneratedValue();