溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

ThinkPHP6中事務(wù)的操作示例

發(fā)布時(shí)間:2021-01-16 11:21:24 來(lái)源:億速云 閱讀:446 作者:小新 欄目:編程語(yǔ)言

這篇文章給大家分享的是有關(guān)ThinkPHP6中事務(wù)的操作示例的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

一、先說(shuō)說(shuō)使用場(chǎng)景。

假設(shè)我需要給朋友轉(zhuǎn)賬1000元錢,正常的業(yè)務(wù)邏輯是:

1、銀行從我的賬戶中扣除1000元

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

如果一切順利,則轉(zhuǎn)賬成功!

那么問(wèn)題來(lái)了,如果我不小心把銀行賬戶輸錯(cuò),導(dǎo)致銀行查找不到我輸入的銀行賬戶,但是這個(gè)時(shí)候錢已經(jīng)從我的賬戶扣除了,如何處理呢?

我們生活中經(jīng)常說(shuō)“如果錢打不過(guò)去,銀行會(huì)退回來(lái)的”,就是這個(gè)意思。

2、事務(wù)操作定義。

那么通過(guò)上面的例子,我們理解下到底什么是事務(wù)操作,事務(wù)指的是邏輯上的一組操作,組成這組操作的各個(gè)單元要么全都成功,要么全都失敗。

就如上面的打錢例子,要么打錢成功,如果不成功,需要把我的錢退回來(lái),也就是返回到初始狀態(tài),也叫做“回滾”。

3、ThinkPHP6中的事務(wù)操作。

我們理解了事務(wù)操作的使用場(chǎng)景,那么在ThinkPHP6中如何使用呢?

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

我們看上面的例子,只有當(dāng)我們插入記錄成功的時(shí)候才會(huì)做刪除操作,如果插入不成功,不會(huì)做刪除操作。

比如我們故意寫錯(cuò)一個(gè)字段name1,數(shù)據(jù)表中沒(méi)有name1該字段,插入程序不會(huì)執(zhí)行成功,那么下面的刪除語(yǔ)句沒(méi)有問(wèn)題,但是他依然不會(huì)執(zhí)行。

除此之外,我們還可以手動(dòng)控制事務(wù)??聪旅娲a:

// 啟動(dòng)事務(wù)
Db::startTrans();
try {
    Db::table('think_user')->find(1);
    Db::table('think_user')->delete(1);
    // 提交事務(wù)
    Db::commit();
} catch (\Exception $e) {
    // 回滾事務(wù)
    Db::rollback();
}

感謝各位的閱讀!關(guān)于“ThinkPHP6中事務(wù)的操作示例”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI