iT邦幫忙

0

[Backend-base] Database Transactions

tags: Laravel6

前言

在確保資料庫操作沒有問題後,再正式提交(commit)這次操作。若操作到一半出錯時,可將前半部的操作取消(rollback)。
如此可以保證同一批次操作的完整性。

* 程式碼如下:

use Illuminate\Support\Facades\DB;

DB::beginTransaction();
                try {
                   
                } catch (\Throwable $th) {
                    DB::rollBack();
                    return response()->json(['result'=>$th],403);
                }
                DB::commit();
  • 範例
use Illuminate\Support\Facades\DB;


DB::beginTransaction();
                try {
                    $reward->update([
                        'hunters'=>$hunter_reward,
                        'bonus'=>$hunter_reward->fee,
                        'chosen'=>1]);
    
                    $user=User::where('id',$reward->user_id)->first();
                    $user->update([
                            'cost'=>$user->cost + $hunter_reward->fee - $reward->budget,
                            ]);
                } catch (\Throwable $th) {
                    DB::rollBack();
                    return response()->json(['result'=>$th],403);
                }
                DB::commit();

尚未有邦友留言

立即登入留言