public transaction ( callable $callback, string | null $isolationLevel = null ) : mixed | ||
$callback | callable | a valid PHP callback that performs the job. Accepts connection instance as parameter. |
$isolationLevel | string | null | The isolation level to use for this transaction. See [[Transaction::begin()]] for details. |
return | mixed | result of callback function |
public function transaction(callable $callback, $isolationLevel = null)
{
$transaction = $this->beginTransaction($isolationLevel);
$level = $transaction->level;
try {
$result = call_user_func($callback, $this);
if ($transaction->isActive && $transaction->level === $level) {
$transaction->commit();
}
} catch (\Exception $e) {
if ($transaction->isActive && $transaction->level === $level) {
$transaction->rollBack();
}
throw $e;
}
return $result;
}