mysql - 无需 Foreach 循环的批量更新查询 Eloquent - Laravel 5.1

标签 mysql laravel eloquent

您好,我的数据库结构如下:

Table: analytics

id | user_id(fk) | date | finalized(boolean)

现在我想批量更新数据。例如我要选择user_id = 1 和日期在2016-03-01 和2016-03-20 之间的数据。然后我想将我在结果中获得的所有记录的最终列从 0 更新为 1。

我所做的如下:

 Analytics::where('user_id', $request->get('user_id'))
->whereBetween('date', [$request->get('from_date'), $request->get('to_date')])
->update(array('finalized' => 1));

但这不起作用,也没有显示任何错误。请让我知道如何在 Eloquent 帮助下做。提前致谢。

我也在 Stackover Flow 中看到了其他问题,但答案建议运行 foreach 循环,我不希望这样。那么有没有什么办法,那么请建议我。再次感谢

最佳答案

您确定 $fillable 属性已在 Analytics 模型上设置,并且包含 finalized 吗?此外,您是否确认请求对象具有您期望的日期和用户 ID?

或者,您可以不用 Eloquent 直接访问数据库。

DB::table('analytics')
    ->where('user_id', $request->user_id)->
    ->whereBetween('date', [$request->from_date, $request->to_date])
    ->update(['finalized' => 1]);

关于mysql - 无需 Foreach 循环的批量更新查询 Eloquent - Laravel 5.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36004153/

相关文章:

php - 同时 mysql 查询 + PHP

javascript - 重定向到另一个页面后如何保留 toast bulma

laravel - 如何使用服务容器和服务提供者在 Laravel 服务中绑定(bind) .env 值

laravel - Nginx,一个应用程序,多个域,重定向所有域的 SSL 和非 www

Laravel 查询日期比当前时间更新

sql - 两个sql查询的性能差异?

java - 如何从客户端服务器程序中的服务器控制台获取输入

php - MySQL 语法错误 : ORDER BY clause is not in GROUP BY

mysql - 无法在我的 mac 上运行特定版本的 mysql

php - Eloquent(没有 Laravel)从具有动态名称的表中获取数据