殺死鳥的方法有很多種。不同的人有自己獨特的有效做事方式,這就是為什麼我在主題中添加了 OPINIONATED,這是我將多條記錄插入多個表並有效運行其他服務的方式。
例如,假設您想要執行一個服務來在註冊控制器中執行這些未列出的任務:
這裡的主要要點是,我們在控制器中運行多個服務,並且它們必須全部成功運行,這樣我們就不會出現部分事務問題。
部分交易可以描述為只完成部分交易的場景,導致資料不一致.
我們如何確保我們能夠避免這種情況?
我們使用 Laravel 框架中隨時可用的資料庫事務外觀。
要運行資料庫事務,我們需要讓程式碼執行器知道這是一個資料庫事務。
然後我們建立一個try-catch區塊,這樣我們就可以輕鬆捕獲錯誤並執行所需的操作。 try 區塊將插入資料庫,而 catch 區塊將捕獲遇到的任何錯誤。
對於Try區塊裡的內容,我們會有
然後,這個 TRY 區塊中最重要的部分是在所有服務成功運行並返回成功回應的情況下提交這些變更。
如果這個try區塊中的所有服務都成功,資料庫提交會將這些交易保存到資料庫中。
現在讓我們來看看Catch塊部分。
如果事務/服務在TRY區塊中失敗,它將到達 catch 區塊。因此,我們將再次呼叫DB外觀來回滾已插入資料庫的每個事務,如下所示:
DB::rollBack() 外觀將在幾毫秒內取消儲存/回滾已插入資料庫的每個事務,不會出現任何問題。
這是我如何避免資料不一致的方法,尤其是當我在 Laravel 中執行多個資料庫事務時。
完整程式碼區塊:
如果您有任何疑問,請不要猶豫,留下它。
以上是自以為是:如何在 Laravel 中安全地將多筆記錄插入多個表中的詳細內容。更多資訊請關注PHP中文網其他相關文章!