Laravel和Transaction,可以捕获错误吗?

时间:2016-06-18 13:19:10

标签: php mysql laravel transactions

我有这样的交易:

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);
        });

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

2,即使我像这样抓住了错误,交易是否仍会回滚?还是会阻止交易工作?

1 个答案:

答案 0 :(得分:1)

在返回500错误之前,您想要DB::rollBack();

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