Laravelでのトランザクションの方法【現役エンジニアが解説】

PROGRAM

今回は、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ブロックの中に書くことができます。