【PHP】讓新人快速理解ThinkPHP6中的事務操做

事務操做對不少新人來講,可能有點陌生,即便看了ThinkPHP6官方手冊中事務操做的部分,也仍然不知所解。php

下面就給你們介紹下事務操做laravel

1、先說說使用場景sql

假設我須要給朋友轉帳1000元錢,正常的業務邏輯是:shell

一、銀行從個人帳戶中扣除1000元服務器

二、銀行給朋友帳戶加上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中的事務操做的內容,經過我們實際生活中的例子講解,你們對事務操做就能夠很好的理解了。

點關注,不迷路

好了各位,以上就是這篇文章的所有內容了,能看到這裏的人呀,都是人才。以前說過,PHP方面的技術點不少,也是由於太多了,實在是寫不過來,寫過來了你們也不會看的太多,因此我這裏把它整理成了PDF和文檔,若是有須要的能夠

點擊進入暗號: PHP+「平臺」

在這裏插入圖片描述

在這裏插入圖片描述


更多學習內容能夠訪問【對標大廠】精品PHP架構師教程目錄大全,只要你能看完保證薪資上升一個臺階(持續更新)

以上內容但願幫助到你們,不少PHPer在進階的時候總會遇到一些問題和瓶頸,業務代碼寫多了沒有方向感,不知道該從那裏入手去提高,對此我整理了一些資料,包括但不限於:分佈式架構、高可擴展、高性能、高併發、服務器性能調優、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql優化、shell腳本、Docker、微服務、Nginx等多個知識點高級進階乾貨須要的能夠免費分享給你們,須要的能夠加入個人 PHP技術交流羣

相關文章
相關標籤/搜索