ThinkPHP提供了单数据库的事务支持,如果要在应用逻辑中使用事务,可以参考下面的方法:
- TP3.2
// 启动事务
M()->startTrans();
// 提交事务
M()->commit();
// 事务回滚
M()->rollback();
- TP5.1
最简单的方式是使用 transaction
方法操作数据库事务,当闭包中的代码发生异常会自动回滚,例如:
Db::transaction(function () {
Db::table('think_user')->find(1);
Db::table('think_user')->delete(1);
});
也可以手动控制事务,例如:
// 启动事务
Db::startTrans();
try {
Db::table('think_user')->find(1);
Db::table('think_user')->delete(1);
// 提交事务
Db::commit();
} catch (\Exception $e) {
// 回滚事务
Db::rollback();
}
注意以上事务操作的时候,确保数据库连接使用的是同一个