allの特定のフィールドが単一の値に等しくなるように、データベース内のすべての行を更新する必要があります。以下に例を示します。
私のデータベーステーブルは次のようなものだとしましょう:
id | data | confirmed
1 | someData | 0
2 | someData | 1
3 | someData | 0
すべての行の確認済みフィールドを1に設定するクエリを実行します。
私はこのようにすることができました:
$rows = MyModel::where('confirmed', '=', '0')->get();
foreach($rows as $row) {
$row->confirmed = 0;
$row->save();
}
しかし、より良い方法があるように思えますか? 「すべての行の「確認済み」フィールドを1に設定する」と言う単一のクエリ。
このようなクエリは、LaravelのEloquent/Fluentに存在しますか?
まあ、簡単な答え:いいえ、雄弁ではできません。モデルはデータベース内の1つの行を表しますが、これを実装しても意味がありません。
ただし、流thisにこれを行う方法があります。
$affected = DB::table('table')->update(array('confirmed' => 1));
またはさらに良い
$affected = DB::table('table')->where('confirmed', '=', 0)->update(array('confirmed' => 1));
このスレッドを最新に保つために、Eloquentモデルに対してすべての行を直接更新するには、次を使用します。
Model::query()->update(['confirmed' => 1]);
あなたは雄弁でこれを行うことができます(laravel 4):
MyModel::where('confirmed', '=', 0)->update(['confirmed' => 1])