2016-04-23 14 views
0

Mit Zend\Db\Adapter\Driver\ResultInterface#getGeneratedValue()Zend\Db bietet eine einfache Möglichkeit, die ID des letzten INSERT ed Eintrag, z.B .:Wie erhält man den letzten generierten Wert für eine benutzerdefinierte PRIMARY KEY-Spalte in ZF2?

$action = new Insert('my_table'); 
$action->values($data); 
$sql = new Sql($this->dbAdapter); 
$statement = $sql->prepareStatementForSqlObject($action); 
$result = $statement->execute(); 
$newId = $result->getGeneratedValue(); 

Aber es scheint, nur zur Arbeit zu kommen, wenn die PRIMARY KEY Spalte „id“ nennt. Wie kann man die generatedValue für eine PRIMARY KEY in einer anderen Spalte definiert abrufen?

+0

Welche Sie SQL verwenden? – tasmaniski

+0

MySQL. Aber dank der Datenbankabstraktionsschicht spielt es in diesem Fall keine Rolle. – automatix

+0

Als getLastInsertValue(); sollte gut funktionieren. PostgreSQL hat in einigen Fällen Probleme ... – tasmaniski

Antwort

1

Verwenden Sie vorzugsweise Zend\Db\TableGateway\TableGateway mit der Methode getLastInsertValue().

use Zend\Db\TableGateway\TableGateway; 
$myTable = new TableGateway('my_table', $this->dbAdapter); 
$action = new Insert('my_table'); 
$action->values($data); 
$myTable->insertWith($action); 
$newId = $myTable->getLastInsertValue(); 
0
$this->dbAdapter->getDriver()->getLastGeneratedValue();