鳥を殺す方法はたくさんあります。人によって物事を効果的に行う独自の方法があるため、トピックに OPINIONATED を追加しました。これが、複数のレコードを複数のテーブルに挿入し、他のサービスを効果的に実行する私の方法です。
たとえば、以下のリストにあるタスクを登録コントローラーで実行するサービスを実行したいとします。
ここでの主な要点は、コントローラーで複数のサービスを実行しており、部分トランザクションの問題が発生しないように、それらがすべて正常に実行される必要があるということです。
部分トランザクションは、トランザクションの一部のみが完了し、データの不整合を引き起こすシナリオとして説明できます。 これを確実に防止するにはどうすればよいですか?
Laravel フレームワークですぐに利用できる
Database Transactionsファサードを使用します。 データベース トランザクションを実行するには、コード実行プログラムにこれがデータベース トランザクションであることを知らせる必要があります。
リーリー
次に、エラーを簡単にキャッチして必要な処理を実行できるように、
ブロックを作成します。 try ブロックはデータベースに挿入され、catch ブロックは発生したエラーをキャッチします。 Try
ブロックの内容については、ユーザーが存在するかどうかを確認するサービス。
この try ブロック内のすべてのサービスが成功すると、データベースのコミットによってこれらのトランザクションがデータベースに保存されます。
Catch
ブロック部分を見てみましょう。TRY ブロックでトランザクション/サービスが失敗した場合は、catch ブロックに進みます。そこで、次のように
DB ファサードを再度呼び出して、データベースに挿入されたすべてのトランザクションをロールバックします。
リーリー
DB::rollBack() ファサードは、データベースに挿入されたすべてのトランザクションをミリ秒以内に問題なく保存解除/ロールバックします。
これは、特にLaravelで複数のデータベーストランザクションを実行している場合に、データの不整合を防ぐ方法です。
リーリー
ご質問がございましたら、お気軽にお問い合わせください。
以上が意見あり: Laravel で複数のレコードを複数のテーブルに安全に挿入する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。