我在db事务闭包中执行了几个数据库保存:
DB::transaction(function() {
...
});
但是我现在要做的是当事务失败而不是抛出异常时我想直接返回客户端的自定义JSON对象,如果事务成功,我想做同样的事情。
这是我的目标:
return [
'code' => '',
'message' => '',
'data' => []
];
我如何从闭包中将上述内容返回给客户?
答案 0 :(得分:2)
您可以使用DB :: beginTransaction,DB :: commit和DB :: rollback方法代替DB :: transaction Closure,以便在代码中拥有更多控制权,您可以像这样包装数据库操作:
DB::beginTransaction();
try {
DB::insert(...);
DB::insert(...);
DB::insert(...);
//If everything is ok we commit
DB::commit();
return response()->json(["status" => "success"])
} catch (Exception $e) {
//something goes wrong, we rollback
DB::rollback();
return response()->json(["error" => "Some error"]);
}
中进行更多研究