【问题标题】:Laravel and Transaction , okay to catch errors?Laravel 和 Transaction ,可以捕获错误吗?
【发布时间】:2016-06-18 13:19:10
【问题描述】:

我有这样的交易:

return DB::transaction(function() use($intersectedArray,$user,$currentTime) {
            try {
                foreach ($intersectedArray as $subItemId) {
                    $user->todoSubItems()->updateExistingPivot($subItemId, ["done" => 1]);
                }
            }
            catch (Exception $e){
                return response()->json(500);
            }

            return response()->json($intersectedArray, 200);
        });

首先,像这样在里面运行一个循环可以吗?(如果单个查询更新失败,我希望整个事务回滚。

第二,即使我像这样捕获内部错误,事务仍然会回滚吗?还是会阻止事务工作?

【问题讨论】:

    标签: php mysql laravel transactions


    【解决方案1】:

    您需要在返回 500 错误之前执行 DB::rollBack();

    只有在遇到未捕获的异常时才会回滚事务。当您捕获异常时,除非您明确这样做,否则它不会回滚。

    【讨论】:

      猜你喜欢
      • 2012-01-11
      • 2019-08-25
      • 2015-09-28
      • 1970-01-01
      • 2015-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多