您好,我的数据库结构如下:
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/