2016-10-20 8 views
1

Larvel 5.0をDatabaseトランザクションで使用しました。これまでのWebアプリケーションのすべてのメソッドも同様に動作しました。このアプリケーションは、私たちの予測よりもはるかに役立ちますので、本当に大好きですLaravel 5.3019データベーストランザクションメソッドは機能しますか?

別のWebアプリケーションこのフレームワークのこの最新バージョンを使用して同じデータベース構造を使用していましたが、最終的に私と他のデータベース構造にはうまくいかないでしょう。 私はもっと多くの人々といくつかのトゥルーリアーのウェブサイトに投稿して、どんな解決策も求めていないが、まだ解決策を得ていないので、このビデオをこのケースについて確かに記録する。

問題:私の問題すべてのデータをデータベースに挿入できる方法を無効にしました(コミット())。

final function Add() 
    { 
     if ($this->request->isMethod('post')) { 

      //No you will see this method use with Try Catch and testing again 
      //DB::beginTransaction(); // Ihave testing with outside of try and inside again 

      Try{ 

       DB::beginTransaction(); 

       $cats = new Cat(); 
       $catD = new CategoryDescriptions(); 

       $cats->parent_id = $this->request->input('category_id'); 
       $cats->status = ($this->request->input('status')) ? $this->request->input('status') : 0; 
       if (($res['result'] = $cats->save())== true) { 

        $catD->category_id = $cats->id; 
        $catD->language_id = 1; 
        $catD->name = $this->request->input('en_name'); 
        if (($res['result'] = $catD->save()) === true) { 

         $catD2 = new CategoryDescriptions(); 
         $catD2->category_id = $cats->id; 
         $catD2->language_id = 2; 
         $catD2->name = $this->request->input('kh_name'); 
         $res['result'] = $catD2->save(); 
        } 
       } 
       if(!empty($res)) { 
        //DB::commit(); 
       } 
       return [$res,($res['result'] = $catD->save())]; 
      }catch(\Exception $e){ // I have already try to use Exception $e without backslash 
       DB::rollback(); 
      } 
     } 

     $cat = Cat::with(['CategoryDescriptions', 'children'])->where('status', 1)->get(); 

     return view('admin.categories.add', ['cat' => $cat]); 
    } 

私のビデオで確認することができます。

Check on my video

+0

問題は何ですか? 「それは私にとってはうまくいかない」という答えは本当にありませんし、あなたのビデオはあまり言いません。 – apokryfos

+0

データベースにデータを挿入しない目的でcommit()メソッドを無効にしたため、すべてのコード行が表示されるかどうかを理解する必要があります。 –

+0

コミットしないと、データは保存されません。データが保存されているという問題はありますか? – apokryfos

答えて

1

あなたのコードが動作しなかった理由を私は知りません。しかし、私はそれが動作すると思うこのコードで試すことができます。 Laravel transaction documentation

try{ 
    DB::transaction(function)use(/*your variables*/){ 

     // your code 
    }); 
}catch(\PDOException $exception){ 
    //debug 
} 

例外が発生した場合、自動的にロールバックされます。トランザクション内で手動ロールバックが必要な場合は、ロジックに基づいて手動で例外をスローすることができます。

+0

これはまったく動作しており、私たちのデータストレージエンジン –

関連する問題