我需要更新数据库中的所有行,以使所有行中的特定字段等于一个值。这是一个例子。
假设我的数据库表是这样的:
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 /流利性中是否存在这样的查询?
最佳答案
好吧,一个简单的答案:不,你不能 Eloquent 。模型代表数据库中的1行,如果他们实现了该行就没有意义。
但是,有一种方法可以使流利:
$affected = DB::table('table')->update(array('confirmed' => 1));
甚至更好
$affected = DB::table('table')->where('confirmed', '=', 0)->update(array('confirmed' => 1));