侧边栏壁纸
博主头像
科技小锅盖博主等级

业精于勤荒于嬉,行成于思毁于随!

  • 累计撰写 12 篇文章
  • 累计创建 27 个标签
  • 累计收到 6 条评论

目 录CONTENT

文章目录

Laravel异常回滚事务的闭包封装到BaseService

科技小锅盖
2022-11-08 / 1 评论 / 2 点赞 / 269 阅读 / 133 字

事务经常用到,总是写相同的太麻烦了,搞个封装,直接用就完事了!
1、封装方法可以放在BaseService

    /**
     * 异常回滚事务的闭包.
     *
     * @param Closure $callback
     * @param null | Closure $errorCallback
     *
     * @return mixed
     * @throws Exception
     */
    public function transaction(Closure $callback, Closure $errorCallback = null)
    {
        DB::beginTransaction();
        try {
            $result = $callback($this);
            DB::commit();

            return $result;
        } catch (Exception $e) {
            DB::rollback();
            if (is_callable($errorCallback)) {
                $errorCallback($this);
            }
            throw $e;
        }
    }

2、方法的使用-use ()里面就是正常的传参

use App\Services\BaseService;
$this->transaction(function () use ($params, $lastUpdateTime) {
	//这里可以写正常的逻辑
});
2

评论区