关于ThinkCMF事务出现的问题


使用事务处理时,会发现正常执行之后,还是会出现异常的问题。

Db::startTrans();
try{
    $result = DB::name('user')->insertGetId($_POST);

    if ($result !== false) {
                            
        foreach ($role_ids as $role_id) {
          if (cmf_get_current_admin_id() != 1 && $role_id == 1) {
             $this->error("为了网站的安全,非网站创建者不可创建超级管理员!");
          }
           Db::name('RoleUser')->insert(["role_id" => $role_id, "user_id" => $result]);
        }
        
        Db::commit();
        $this->success("添加成功!", url("manage/index"));
    } else {
        $this->error("添加失败!");
    }
}catch (\Exception $e){
    //错误信息
    Db::rollback();
    $this->error("事务异常!");
    var_dump($e->getMessage());
}

在这里即使添加成功,还是会运行到事务异常里面,后来查了半天,查到$this->success();也是会抛出异常,这个时候需要把

catch (\Exception $e)

修改为

catch (\think\Exception\DbException $e)

这样就不会再出现事务异常了,真是一个坑。

打赏

评论

暂时关闭,稍后恢复~
文档请看10遍以上!有问题可加QQ群!
发表话题

源素材推荐

提问必知

0.话题发布后没及时显示,请联系官方QQ群管理;
1.话题支持代码,qq截屏直接粘贴,和QQ群一样;
2.问题描述清,比如服务器版本,程序版本;
3.能上代码,就不用文字;
4.把问题发到话题后再发QQ群;
5.如果感觉回复者解答的不错,可以发红包!
6.多帮助别人也是对自己的锻炼!
7.付费讨论中只有提问者和付费用户才可以查看回复

积分规则

1.评论积分+1;每天最多10次奖励
2.发布话题积分+1;每天最多5次奖励
3.垃圾评论积分-500;
4.黄色,暴力,违反我国法律评论直接封号


ThinkCMF 8.0.0发布啦!祝大家节日快乐! 立即体验!