{
$archive = $this->createArchive($files); //частичное заполнение модели вместе с $archive->save()
// some logic
DB::commit();
catch () {
DB::rollBack();
}
тразакция сработает?
Т.е. Вопрос заключается в том, работает ли транзакция, когда вся магия обращения к бд происходит внутри метода, в котором нет DB::commit();, но сам вызов этого метода находится на уровне DB::commit()
Или транзакция работает ТОЛЬКО когда вся магия работы с бд находится на одном уровне с DB::commit();?
Просто я не хочу раздувать метод, но хочу воспользоваться транзакцией.
Спасибо
да, но для большей наглядности замени на: DB::transaction(fn() => $this->createArchive($files));
спасибо, сейчас буду тестить
твой алгоритм больше подойдёт для случаев, когда требуется ручное управление транзакциями, если тебе просто нужно откатиться, если что-то пошло не так, замыкание будет удобнее.
Обсуждают сегодня