Laravelでのトランザクションの方法【現役エンジニアが解説】
今回は、Laravelでのトランザクションの方法について、簡単に解説していきます。
beginTransactionメソッドを使う方法
LaravelのDBファサードにはbeginTransactionメソッドがあります。
これでトランザクションを張ることで、手動でコミットやロールバックをすることが可能です。
DB::beginTransaction(); try { // DBの何らかの処理 DB::commit(); // コミット } catch (\Exception $e) { DB::rollback(); // ロールバック }
上記のコードのように、エラーが発生した際等にはロールバック、正常終了時はコミットを手動で行います。
transactionメソッドを使う方法
LaravelのDBファサードにはtransactionメソッドもあります。
このメソッドでは第一引数に無名関数を指定し、その中で処理を行います。
DB::transaction(function () { // DBの何らかの処理 });
上記のようにトランザクションを張ることで、エラー時はロールバック、正常終了時はコミットの処理が自動で行われます。
transactionメソッドのrollback時のエラーを拾う方法
LaravelのDBファサードのtransactionメソッドでもロールバックされた際に自分の処理を行いたいはずです。
その場合には、beginTransactionメソッドとは異なり、transactionメソッドを外からtryブロックで囲う必要があります。
try { DB::transaction(function () { // DBの何らかの処理 }); } catch (\Exception $e) { // ロールバック後の処理 }
上記のコードのようにトランザクションを張ることで、ロールバックされた際に、ロールバック後の処理をcatchブロックの中に書くことができます。