Blog スタッフブログ

Laravel システム開発

[Laravel]Laravelでのトランザクション処理の仕方

システム開発担当のTFです。

※Laravel8系統対応

やり方

  • useでDBを宣言
  • try-catchで記述する(エラーログ等のエラー処理の為)
  • DB::beginTransaction();で開始
  • DB::commit();で確定
  • エラー時に、DB::rollBack();で、ロールバック

参考

  Laravel 8.x データベース:準備
  Laravelでトランザクションを張る2つの方法!
  【Laravel】transactionメソッド

サンプル

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Test;

// DBの利用
use Illuminate\Support\Facades\DB;

class TestController extends Controller
{
	public function update(Request $request, $id)
    {
		$test = Test::find($id);
		
		try {
			// トランザクション開始
			DB::beginTransaction();
		
			// DB処理
			$test->update($request->all())->save();
			
			// コミット
			DB::commit();
		} catch (Throwable $e) {
			// ロールバック
			DB::rollBack();
			
			// ログ等エラー処理
		}

    }
}