I need to update all of the rows in a database so that a particular field in all of them is equal to a single value. Here's an example.

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

id data confirmed
1 someData 0
2 someData 1
3 someData 0

I want to perform a query that sets the confirmed field of every row to 1.

我可以这样做:

$rows = MyModel::where('confirmed', '=', '0')->get();
foreach($rows as $row) {
    $row->confirmed = 0;
    $row->save();
}

但似乎还有更好的办法?一个查询只会说"将每行的‘确认’字段设置为1."

Does such a query exist in Laravel's Eloquent/Fluent?

推荐答案

嗯,一个简单的答案是:不,你不能用口才.一个模型表示数据库中的1行,如果他们实现这一点就没有意义了.

但是,使用Fluent可以做到这一点:

$affected = DB::table('table')->update(array('confirmed' => 1));

or even better

$affected = DB::table('table')->where('confirmed', '=', 0)->update(array('confirmed' => 1));

Laravel相关问答推荐

如何在使用Docker容器部署Laravel 8、9、10时处理SIGTERM信号,特别是与调度程序和工作进程相关的问题?

我在 laravel 中插入多个复选框值.我怎样才能做到这一点?

如何更改 laravel sanctum 返回message: Unauthenticated.

如何判断用户Electron邮件是否已存在

Laravel 5 make:控制器在应用程序文件夹而不是控制器文件夹中创建控制器

在 laravel 5.2 中禁用特定路由的 Web 中间件

使用限制排队 Guzzle 请求

Laravel 使用 Storage::put 生成唯一 ID

如何在没有 Artisan 的情况下运行 Laravel?

如果值存在于另一个字段数组中,Laravel 验证规则

Laravel - 更新时禁用更新时间

Eloquent - 更新集合中的所有模型

我如何从给定的日期时间 struct 创建Carbon 对象?

如何将对象(模型类型对象)插入到 Laravel 中特定索引号的集合对象中?

Blade 中的条件扩展

如何在 Laravel 5.2 中使用 OR 条件将多个参数传递给中间件

Laravel 删除集合中的第一项

Laravel 更新后用户模型错误(用户类包含 3 个抽象方法)

以编程方式而不是从 CLI 运行 Laravel 5 seeder

限制自己重载外部 API 的速率