【Laravel】トランザクションについて

DB操作時にデータの整合性を保つために必要なトランザクション処理について調べてみました。

まず、どこに書くべきか

目的は整合性を保つためなので、関連する複数のテーブルの登録時には必ず必要になります。
それ以外でも基本的に書いておいて方が個人的にはいいかと思ってます。

やり方は2通りある

  • transactionメソッドを利用する←基本的にこちらを使うと思うのでそちらを紹介します。
  • 手動でtransactionを記載する

transactionメソッドを利用する方法

PHP
DB::transaction(function ()  use () {
    // DBの処理を記載(登録、更新、削除など)
});


// 戻り値を受け取りたい場合
$result = DB::transaction(function ()  use () {
    // DBの処理を記載(登録、更新、削除など)
    return $data;
});

上記の補足
・正常に処理が実行されるとトランザクションを自動的にコミットする。
・DB処理に失敗した場合は、トランザクションを自動的に元に戻し例外を投げてくれます。