thinkphp5中如何回滚事务?
2024-09-04 22:51:05
在ThinkPHP5中,回滚事务可以通过调用数据库操作类的rollback()
方法实现
使用Db类回滚事务
use think\Db;
try {
// 开启事务
Db::startTrans();
// 执行数据库操作
Db::name('user')->insert(['name' => 'user1', 'age' => 18]);
Db::name('order')->insert(['user_id' => 1, 'amount' => 100]);
// 提交事务
Db::commit();
} catch (\Exception $e) {
// 回滚事务
Db::rollback();
// 处理异常
echo "操作失败:" . $e->getMessage();
}
使用模型回滚事务
use app\index\model\User;
use app\index\model\Order;
$user = new User();
$order = new Order();
try {
// 开启事务
$user->startTrans();
$order->startTrans();
// 执行数据库操作
$user->save(['name' => 'User1', 'age' => 18]);
$order->save(['user_id' => 1, 'amount' => 100]);
// 提交事务
$user->commit();
$order->commit();
} catch (\Exception $e) {
// 回滚事务
$user->rollback();
$order->rollback();
// 处理异常
echo "操作失败:" . $e->getMessage();
}
在上面的示例中,如果在执行数据库操作过程中发生异常,将调用rollback()
方法回滚事务。这样可以确保数据的一致性,避免因部分操作失败而导致的数据不一致问题。
还没有人发表评论