thinkphp5中如何回滚事务?

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()方法回滚事务。这样可以确保数据的一致性,避免因部分操作失败而导致的数据不一致问题。

0 条评论

还没有人发表评论

发表评论 取消回复

记住我的信息,方便下次评论
有人回复时邮件通知我