Code前端首页关于Code前端联系我们

新手如何理解ThinkPHP6中的事务操作?

terry 2年前 (2023-09-24) 阅读数 66 #后端开发

交易操作对于许多新人来说可能有点陌生。即使读了ThinkPHP6官方手册的事务操作部分,他仍然不明白。

下面是交易操作的介绍。

1。先说一下使用场景。

比如我需要给朋友转账1000元。正常的业务逻辑是:

1。银行从我账户上扣了1000元

2。银行给朋友的账户增加了1000元。

如果一切顺利的话,转账就成功了!

那么有个问题。如果我不小心输入了错误的银行账户,银行找不到我输入的银行账户,但钱已经从我的账户中扣除,我该怎么办?

日常生活中,我们常说“钱转不出去,银行会退回来”,就是这个意思。

2。事务操作定义。

那么通过上面的例子我们就知道什么是交易操作了。事务是指一组逻辑操作。组成这组操作的每个单元要么全部成功,要么全部失败。

就像上面转账的例子,也许转账成功了,如果不成功,钱就得退回来,也就是回到初始状态,也叫“退货”。

3。 ThinkPHP6 中的事务操作。

我们知道了事务操作的使用场景,那么在ThinkPHP6中如何使用呢?

Db::transaction(function () {
    Db::table('think_user')->insert(['name'=>'aaa']);
    Db::table('think_user')->delete(1);
});

看一下上面的例子。只有当我们插入记录成功后才会执行删除操作。如果插入不成功,则不会执行删除操作。

例如,如果我们不小心写错了column1的名称,则数据表中不存在column1的名称,插入程序将无法成功执行。那么下面的delete语句就没有问题了,但是还是不会执行。

除此之外,我们还可以手动控制交易。看下面的代码:

// 启动事务
Db::startTrans();
try {
    Db::table('think_user')->find(1);
    Db::table('think_user')->delete(1);
    // 提交事务
    Db::commit();
} catch (\Exception $e) {
    // 回滚事务
    Db::rollback();
}

以上是ThinkPHP6中事务操作的内容。通过讲解现实生活中的例子,让大家能够理解交易操作。

php中文网认证作者:“王学勤”

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门