thinkphp5 try catch 事务疑问

方式1

Db::startTrans();
try{
    Db::name('table1')->update(1);
    Db::name('table2')->update(2);
    Db::commit();
    }catch(){

    Db::rollback();
}

方式2

$status = false;
Db::startTrans();
try{
    $res = Db::name('table1')->update(1);
    $res1 =  Db::name('table2')->update(2);
    if($res && $res1)
    {
        $status = true;
        Db::commit();
    }
    
    }catch(){

    Db::rollback();
}
这两种方式用的哪一种更好
我之前一直都是使用第一种,不知道会有什么毛病不?
牧羊人nacy
浏览 1961回答 5
5回答

饮歌长啸

没必要啊,错误了自然会到catch里面去啊

哆啦的时光机

看业务场景,如果后续不需要回滚结果,使用第一个就行。

叮当猫咪

我觉得方法1很好,很简洁。try catch可以捕获到很多的错误,像这个sql语句执行错误肯定是可以的。第二种方法略有瑕疵,在判断是否成功的情况下应该用!==false,不然在修改0条记录的情况下你会误判为失败而回滚。

DIEA

方法一好一些,tra..catch..机制可以捕捉到你sql的错误了,没有必要再做额外的判断。而且这样写简洁明了
打开App,查看更多内容
随时随地看视频慕课网APP