PHP:发生异常时撤消

时间:2018-09-27 15:18:02

标签: php laravel exception undo

如果发生异常,PHP / Laravel中是否有一种方法可以撤消服务器步骤?我知道DB::transaction(function()...,但是在使用外部库的情况下不起作用...

在我的情况下,我正在使用Stripe:

1。)创建一个Source

2。)创建一个Customer

3。)将Source附加到Customer

4。)为Subscription

创建一个Customer

但是如果Stripe有外部异常,例如在最后一步,我希望不执行其他三个步骤,而是返回一条错误消息。

注意:我正在使用Laravel中的异常处理程序来catch异常。

如果有办法解决这个问题,我会很高兴的:-)


它与可能的重复项不同,因为如果发生异常,我想撤消几个步骤

1 个答案:

答案 0 :(得分:1)

您可以像这样手动使用数据库事务:

DB::beginTransaction();

// create your source, customer and attach them

// perform your api call and catch on exection

在您的api调用的catch块中运行以下命令:

DB::rollBack();

如果api调用成功运行,请运行以下命令:

DB::commit();

https://laravel.com/docs/5.6/database#database-transactions(具体请参见最后的手动交易部分)