我需要更新数据库中的所有行,以使所有行中的特定字段等于一个值。这是一个例子。

假设我的数据库表是这样的:

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));

10-07 13:57