ZF2 db トランザクションを使用して複数のテーブルを更新したいと考えています。通常、私は単一のテーブルに対して次のような方法でトランザクションを行います:
$connection = null;
try {
$connection = $this->tableGateway->getAdapter()->getDriver()->getConnection();
$connection->beginTransaction();
$this->tableGateway->insert($data);
$connection->commit();
}
catch (Exception $e) {
if ($connection instanceof \Zend\Db\Adapter\Driver\ConnectionInterface) {
$connection->rollback();
}
}
今、1 つのトランザクション内で 2 つのテーブルを更新したいと考えています。ZF1 では、table2 クラスのインスタンスを作成し、同じトランザクション内で適切なメソッドを呼び出すことでこれを行いました。しかし、モデル内で別のモデルクラスを呼び出す方法がわからないので、ZF1のようにはできません。これは、tbl_invoice に新しい行を追加したり、新しい請求書 (請求書) を入力するときに請求書の tbl_runno テーブルの実行番号を更新するなどの単純なタスクに必要です。