TP5 的事务操作

事务的基本概念就不说了:

直接上代码:

use think\Db;

// 事务测试
public function transTest()
{
    // 手动控制事务的提交
    Db::startTrans();
    try {
        $res1 = Db::name('admin')->delete(2);
        $res2 = Db::name('admin')->update(['admin_id' => 3, 'admin_username' => '测试']);
        // 提交事务
        if ($res1 && $res2){
            Db::commit();
            $rtn = [
                'code' => 1,
                'msg' => '成功',
            ];
        }else{
            Db::rollback();
            $rtn = [
                'code' => 0,
                'msg' => '操作失败'
            ];
        }
    } catch (\Exception $e) {
        // 捕获异常,回滚事务
        Db::rollback();
        $rtn = [
            'code' => 0,
            'msg' => $e->getMessage()
        ];
    }
    return $rtn;
}

catch 说明:

- catch 捕获的是 SQL执行的异常,比如根本不存在该字段或者数据表。

- 如果语句都正确,只是 SQL 返回了 false,是不会抛出异常的。

- 例子:比如删除 id=1000 的数据,该数据不存在会返回 false,但是这句 sql 是正确的,只是执行的结果为 0 而已。

 

 

 

 

 

 

 

 

 

 

 

——占位符

posted @ 2020-03-15 20:39  小寒1206  阅读(422)  评论(0)    收藏  举报