###前提・実現したいこと
3つのカラム(int)の値が10以上だった場合に0に戻すということをしたいです。
現在update文をひとまとめに書いているので該当していないカラムまでupdateされてしまいます。
1つずつ記載すれば良いとは思うのですが、できればまとめてupdate文が書ければなと思っています。
###該当のソースコード
php
1$users= DB::table('users') 2 ->where('counts','>', 10) 3 ->orWhere('item_counts', '>', 10) 4 ->orWhere('book_counts','>',10) 5 ->get(); 6 7foreach($users as $user){ 8 DB::transaction(function() use ($user){ 9 DB::table('users') 10 ->where('counts','>', 10) 11 ->orWhere('item_counts', '>=', 10) 12 ->orWhere('book_counts','>=',10) 13 ->update(['counts' => 0, 14 'item_counts' => 0, 15 'book_counts' => 0,]); //ここにまとめて記載してしまっている 16 }); 17 }
上記のように最後のupdate文にて、users.id=1
のユーザが
users.counts=12 users.book_counts=7
だった場合に users.book_counts=7
も0になってしまう(現在の書き方だと当たり前なのですが・・・)
それぞれの条件が当てはまった場合にtrueのカラムのみをupdateしたい場合はどのようにクエリを書けば良いのでしょうか。
ご教授お願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/16 10:10