Pet*_*ete 39 fluent laravel eloquent laravel-3
我需要更新所有行的一个数据库,以便在某一领域的所有他们等于单个值.这是一个例子.
假设我的数据库表是这样的:
id | data | confirmed
1 | someData | 0
2 | someData | 1
3 | someData | 0
Run Code Online (Sandbox Code Playgroud)
我想执行一个查询,将每行的确认字段设置为1.
我可以这样做:
$rows = MyModel::where('confirmed', '=', '0')->get();
foreach($rows as $row) {
$row->confirmed = 0;
$row->save();
}
Run Code Online (Sandbox Code Playgroud)
但似乎会有更好的方法吗?单个查询只会说"将每行'确认'字段设置为1".
Laravel的Eloquent/Fluent中是否存在这样的查询?
LHo*_*man 72
嗯,一个简单的答案:不,你不能用口才.模型表示数据库中的1行,如果他们实现了这一行就没有意义.
但是,有一种方法可以用流利的方式做到这一点:
$affected = DB::table('table')->update(array('confirmed' => 1));
Run Code Online (Sandbox Code Playgroud)
甚至更好
$affected = DB::table('table')->where('confirmed', '=', 0)->update(array('confirmed' => 1));
Run Code Online (Sandbox Code Playgroud)
Mat*_*att 66
只是为了保持此线程的最新状态,您可以使用以下命令直接针对Eloquent模型更新所有行:
Model::query()->update(['confirmed' => 1]);
Run Code Online (Sandbox Code Playgroud)
小智 19
你可以用elquent(laravel 4)做到这一点:
MyModel::where('confirmed', '=', 0)->update(['confirmed' => 1])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
40220 次 |
| 最近记录: |