Обычно транзакции обрабатываются так:
DB::query('START TRANSACTION');
try {
//do something
DB::query('COMMIT');
} catch (Exception $e) {
DB::query('ROLLBACK');
}
Что это значит, если все будет успешно внутри блока try
, отлично. Если какая-либо его часть не работает, она не достигнет commit
и перейдет к блоку catch
, который содержит rollback
. Вы можете добавить больше обработки ошибок в catch
, если хотите, даже выдать новое собственное исключение или бросить то же исключение, которое вы поймали.