Есть ли способ в PHP / Laravel отменить несколько шагов, если происходит исключение? я знаю DB::transaction(function()...
, но это не работает в случае использования внешней библиотеки …
В моем случае я использую Stripe:
1.) Создать Source
2.) Создать Customer
3.) Прикрепите Source
к Customer
4.) Создать Subscription
для Customer
Но если есть внешнее исключение из полосы, например на последнем шаге я хотел бы, чтобы остальные три шага не выполнялись, а вместо этого возвращалось сообщение об ошибке.
Замечания: Я использую обработчик исключений из Laravel для catch
Исключения.
Я был бы счастлив, если есть способ решить эту проблему 🙂
Это отличается от возможного дубликата, потому что я хотел бы отменить несколько шагов, если возникает исключение
Вы можете использовать транзакции БД вручную следующим образом:
DB::beginTransaction();
// create your source, customer and attach them
// perform your api call and catch on exection
В блоке catch вашего вызова API запустите это:
DB::rollBack();
Если вызов API выполняется успешно, запустите это:
DB::commit();
https://laravel.com/docs/5.6/database#database-transactions (см. часть ручных транзакций в конце)
Других решений пока нет …