現在最新のLaravel5.2で開発を行っており、トランザクションの処理で難航しております。
Eloquentを継承したModelを使用してDBとのやり取りを行っているのですが、下記のような場合はロールバックが行われません。
PHP
1// トランザクション開始 2DB::beginTransaction(); 3 4$res = m_user::where('user_id', $user_id)->update(array('status' => 1)); 5if (!$res) { 6 // ロールバック 7 DB::rollBack(); 8 return Redirect::back() 9} 10// コミット 11DB::commit();
PHP
1class m_user extends Eloquent 2{ 3 // 接続設定(独自に追加した設定) 4 protected $connection = 'my−mysql'; 5 // テーブル名 6 protected $table = 'm_user'; 7 // プライマリキー名 8 protected $primaryKey = 'user_id'; 9 // カラム名 10 protected $fillable = [ 11 'user_id' 12 ,'login_id' 13 ,'password' 14 ,'status' 15 ]; 16 // タイムスタンプ 17 public $timestamps = false; 18}
特にエラーもなくロールバックをスルーします。
しかしEloquentを使用しない、下記の場合は問題なくロールバックしてくれます。
PHP
1// トランザクション開始 2DB::beginTransaction(); 3 4$res = DB::table('m_user')->where('user_id', $user_id)->update(array('status' => 1)); 5if (!$res) { 6 // ロールバック 7 DB::rollBack(); 8 return Redirect::back() 9} 10// コミット 11DB::commit();
LaravelのトランザクションではEloquentは使用できないのでしょうか?
ご存知の方がいらっしゃいましたら教えていだだきたく存じます。
よろしくお願い致します。
回答3件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。