异常时事务块中止请求,以便回滚。但是现在每当出现异常时,都需要存储数据-异常详细信息到表中。中止请求时,插入/更新查询也会回滚。
\DB::transaction(function () use ($request) {
try{
// operations
}catch(Exception $e){
$exception_model = new ExceptionModel();
$exception_model->user = $request->user_info;
$exception_model->detail = $e;
$exception_model->save();
abort(Response::HTTP_BAD_REQUEST, 'Something went wrong');
}
});
但是由于它会自动回滚(即laravel事务关闭),因此异常模型也会发生回滚。怎么做?
将事务放入try块应该可以工作:
use Exception;
try {
\DB::transaction(function () use ($request) {
// operations
});
} catch (Exception $e) {
$exception_model = new ExceptionModel();
$exception_model->user = $request->user_info;
$exception_model->detail = $e;
$exception_model->save();
abort(Response::HTTP_BAD_REQUEST, 'Something went wrong');
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句