创建时间:2025-04-01
Db::startTrans() 是 ThinkPHP 中用于开启数据库事务的方法。
事务的主要作用是确保一组数据库操作要么全部成功执行,要么全部不执行,保证数据的一致性。
典型使用方式:
try {
Db::startTrans(); // 开启事务
// 执行多个数据库操作
Db::table('table1')->update([...]);
Db::table('table2')->insert([...]);
Db::commit(); // 提交事务
} catch (\Exception $e) {
Db::rollback(); // 回滚事务
}举个例子:
假设你要同时更新用户余额和添加交易记录,这两个操作必须同时成功或同时失败,以保证数据一致性:
- 如果更新余额成功但添加记录失败,通过 rollback() 回滚,撤销余额更新
- 只有两个操作都成功,才通过 commit() 提交事务
- 这样可以避免出现余额已减但没有交易记录,或有交易记录但余额未减的情况