2016-07-25 49 views
4

私は、これらの多型の関係持っている:Laravelのロールバックトランザクションは多相関係をサポートしていますか?

staff: 
id - integer 
name - string 

orders: 
id - integer 
price - integer 

photos: 
id - integer 
path - string 
imageable_id - integer 
imageable_type - string 

をし、コントローラで:

public function example() { 

    \DB::beginTransaction(); 

    try { 

      $staff = Staff::findOrFail(1); 

      $row = $staff->photos()->create([ 'path' => 1 ]); 

      $row->path = 2; 
      $row->save(); 

      abort(445); 

    } catch(\Exception $e) { 

     \DB::rollback() 
    } 

} 

予想したように、現在の行は、photos表から削除されなければならないが、それはパス= 2でまだあります

私はすぐに考えますか?またはそれは誤解ですか?

+0

あなたのモデルをポストした多態関係はどこにありますか?DB :: transaction'をトランザクション&ロールバックを自動的に開始するクロージャー関数として渡すこともできます。処理する必要はありません –

答えて

1

トランザクションをロールバックしていない場合は、テーブルがMyISAMである可能性があります。MyISAMテーブルはロールバックをサポートしていないためです。

テーブルのエンジンが正しくInnoDBに設定されていることを再度確認します。

+0

ありがとう、問題解決済み! – pemi

関連する問題