ThinkPHP 5 快速入门:事务支持

发布于 2019年07月01日 18:19:13 - 技术分享 - PHP - ThinkPHP

注意

由于需要用到事务的功能,请先修改数据表的类型为InnoDB,而不是MyISAM。

对于事务的支持,最简单的方法就是使用transaction方法,只需要把需要执行的事务操作封装到闭包里面即可自动完成事务,例如:

Db::transaction(function () {
    Db::table('think_user')
        ->delete(1);
    Db::table('think_data')
        ->insert(['id' => 28, 'name' => 'thinkphp', 'status' => 1]);
});

一旦think_data表写入失败的话,系统会自动回滚,写入成功的话系统会自动提交当前事务。

也可以手动控制事务的提交,上面的实现代码可以改成:

// 启动事务
Db::startTrans();
try {
    Db::table('think_user')
        ->delete(1);
    Db::table('think_data')
        ->insert(['id' => 28, 'name' => 'thinkphp', 'status' => 1]);
    // 提交事务
    Db::commit();
} catch (\Exception $e) {
    // 回滚事务
    Db::rollback();
}

注意

事务操作只对支持事务的数据库,并且设置了数据表为事务类型才有效,在Mysql数据库中请设置表类型为InnoDB。并且事务操作必须使用同一个数据库连接。

转载声明:本站文章无特别说明,皆为原创,版权所有,转载请注明:Dy大叔的日常

转载自 ThinkPHP 5 快速入门:事务支持 | XDY.ME@Dy大叔的日常

XDY.ME@Dy大叔的日常