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 に答える