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

ThinkPHP6中的事務操作

Jun 23, 2020 am 09:28 AM
thinkphp6

事務操作對許多新人來說,可能有點陌生,即使看了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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)