laravel — PHP: отменить, если возникает исключение

Есть ли способ в PHP / Laravel отменить несколько шагов, если происходит исключение? я знаю DB::transaction(function()..., но это не работает в случае использования внешней библиотеки …

В моем случае я использую Stripe:

1.) Создать Source

2.) Создать Customer

3.) Прикрепите Source к Customer

4.) Создать Subscription для Customer

Но если есть внешнее исключение из полосы, например на последнем шаге я хотел бы, чтобы остальные три шага не выполнялись, а вместо этого возвращалось сообщение об ошибке.

Замечания: Я использую обработчик исключений из Laravel для catch Исключения.

Я был бы счастлив, если есть способ решить эту проблему 🙂


Это отличается от возможного дубликата, потому что я хотел бы отменить несколько шагов, если возникает исключение

0

Решение

Вы можете использовать транзакции БД вручную следующим образом:

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 (см. часть ручных транзакций в конце)

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]