首頁 > php框架 > ThinkPHP > ThinkPHP6中的事務操作

ThinkPHP6中的事務操作

王雪芹
發布: 2020-06-23 13:28:37
原創
6659 人瀏覽過

事務操作對許多新人來說,可能有點陌生,即使看了ThinkPHP6官方手冊中事務操作的部分,也仍然不知所解。下面就跟大家介紹下事務操作。

一、先說說使用場景。

假設我需要給朋友轉帳1,000元錢,正常的業務邏輯是:

1、銀行從我的帳戶中扣除1,000元  

#2、銀行給朋友帳戶加上1000元。

如果一切順利,則轉帳成功!

那麼問題來了,如果我不小心把銀行帳戶輸錯,導致銀行查找不到我輸入的銀行帳戶,但是這個時候錢已經從我的帳戶扣除了,如何處理呢?

我們生活中經常說“如果錢打不過去,銀行會退回來的”,就是這個意思。

2、事務操作定義。

那麼透過上面的例子,我們理解下到底什麼是事務操作,事務指的是邏輯上的一組操作,組成這組操作的各個單元要么全都成功,要么全都失敗。

就如上面的打錢例子,要嘛打錢成功,如果不成功,需要把我的錢退回來,也就是回到初始狀態,也叫做「回滾」。

3、ThinkPHP6中的交易操作。

我們了解交易操作的使用場景,那麼在ThinkPHP6中如何使用呢?

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

我們看上面的例子,只有當我們插入記錄成功的時候才會做刪除操作,如果插入不成功,不會做刪除操作。

例如我們故意寫錯一個字段name1,資料表中沒有name1該字段,插入程式不會執行成功,那麼下面的刪除語句沒有問題,但是他仍然不會執行。

除此之外,我們還可以手動控制交易。看下面程式碼:

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

以上就是ThinkPHP6中的事務操作的內容,透過咱們實際生活中的例子講解,大家對事務操作就可以很好的理解了。

以上是ThinkPHP6中的事務操作的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
Windows2012+phpstudy8.1安裝thinkphp6錯誤
來自於 1970-01-01 08:00:00
0
0
0
[獨家全程圖解]ThinkPHP6框架的下載與安裝
來自於 1970-01-01 08:00:00
0
0
0
phpstrom如何支援thinkphp6版本的提示?
來自於 1970-01-01 08:00:00
0
0
0
thinkphp6中怎麼把類別放到容器中?
來自於 1970-01-01 08:00:00
0
0
0
thinkPHP6 目錄檔沒有thinkPHP庫資料夾了?
來自於 1970-01-01 08:00:00
0
0
0
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板