PHP: отменить, если возникает исключение - PullRequest
0 голосов
/ 27 сентября 2018

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

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

1.) Создайте Source

2.) Создайте Customer

3.) Присоедините Source к Customer

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

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

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

Я был бы рад, если есть способ решить эту проблему:-)


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

1 Ответ

0 голосов
/ 27 сентября 2018

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

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

...