DB::beginTransaction()
はトランザクションを開始するだけで、DB::transaction()
の場合はの内部でのトランザクションが実行されるクロージャ機能を渡す必要があります。
ので、この:
DB::transaction(function() {
// Do something and save to the db...
});
はこれと同じである:
// Open a try/catch block
try {
// Begin a transaction
DB::beginTransaction();
// Do something and save to the db...
// Commit the transaction
DB::commit();
} catch (\Exception $e) {
// An error occured; cancel the transaction...
DB::rollback();
// and throw the error again.
throw $e;
}
あなたが見ることができるように、DB::transaction()
がエラーをキャッチするために書くコードを避けるために「ヘルパー」機能で、トランザクションを開始、トランザクションをコミットし、エラーが発生した場合はオプションでロールバック(トランザクションのキャンセル)します。
ロジックが複雑であるか、または特定の動作が必要な場合は、手動でトランザクションを構築します。あなたのロジックがかなりシンプルであれば、DB::transaction()
が行く方法です。
DB::commitTransaction()
とDB::rollbackTransaction()
については、情報が見つかりません。
使用方法のソースコードを確認することをお勧めします。これは、作成方法と書き方を学ぶためです。 Here's the fileにこれらのメソッドのソースを指定します。
DB :: commitTransaction()とDB :: rollbackTransaction()は存在しません。 – Doom5
@ Doom5しかし、私はそれを見ましたhttps://laracasts.com/discuss/channels/eloquent/do-you-use-database-transactions-for-your-eloquent-queries –