2017-10-10 5 views
0
DB::beginTransaction(); 
    try{ 
     $product = Product::create($request->all()); 
     DB::commit(); 
     return [ 
      'product' => $product 
     ]; 
    }catch (\Exception $e) 
    { 
     DB::rollBack(); 
     throw new ResourceException($e->getMessage()); 
    } 

問題があればすべてOKかロールバックするとトランザクションを開始する必要がありますか?または、このコードで十分でしょう:laravel 5でコードを書き込む方が良いですか?*

$product = Product::create($request->all()); 
     return [ 
     'product' => $product 
    ]; 
+0

商品を返品することにより、 –

+0

はい、このコードを使用するのは良いですが、 'beginTransaction'は一般的に2つ以上のクエリをコミットまたはロールバックするために使用されます – C2486

+0

単一クエリ、トランザクションの必要はありません – Mohammad

答えて

0

トランスアクションは、すべて実行する必要があるクエリのセットがある場合にのみ必要です。

たとえば、A銀行がBに送金した場合、両方のアカウントが変更され、Aのアカウントはその金額で控除され、Bのアカウントに追加が行われます。したがって、いずれかのタスクが失敗した場合、システムに問題が発生します。

このようなケースでは取引を使用しています。一緒に実行されることになっている一連のクエリは、トランザクションとして保持されます。クエリが失敗した場合、もう1つのクエリはロールバックされます。

インターネットで詳しく読むことができます。

したがって、単一のクエリを実行している場合、トランザクションは必要ありません。 2番目のアプローチはうまくいくでしょう。

関連する問題