Return 与客户的约会 DB::Transaction Closure()

Return Date To Client From Within DB::Transaction Closure()

我正在我的数据库事务闭包中执行多个数据库保存:

DB::transaction(function() {
    ...
});

但是我现在想做的是当交易失败而不是抛出异常我想 return 自定义 JSON 对象直接发送给客户端,如果交易成功我想做同样的事情。

这是我的对象:

return [
  'code' => '',
  'message' => '',
  'data' => []
];

我如何 return 从闭包中向客户发送上述内容?

您可以使用 DB::beginTransaction、DB::commit 和 DB::rollback 方法来代替 DB::transaction 闭包,以便在代码中获得更多控制,您可以包装您的数据库操作,例如这个:

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

您可以在 database transaction docs

中进行更多研究