If an Exception is thrown inside, the operation is automatically rolled back.
If no Exception happens, it commits automatically.
It also supports (simulated) nested transactions (that is useful when
you have many methods that needs transactions but are unaware of
each other).
Example:
$from = 1;
$to = 2;
$amount = 300;
R::transaction(function() use($from, $to, $amount)
{
$accountFrom = R::load('account', $from);
$accountTo = R::load('account', $to);
$accountFrom->money -= $amount;
$accountTo->money += $amount;
R::store($accountFrom);
R::store($accountTo);
});
public static transaction ( callable $callback ) : mixed | ||
$callback | callable | Closure (or other callable) with the transaction logic |
리턴 | mixed |