新手如何理解ThinkPHP6中的事务操作?
交易操作对于许多新人来说可能有点陌生。即使读了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前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。