PHP:节省服务器资源-理论

时间:2018-08-15 19:37:19

标签: sql laravel foreach resources

(使用Laravel) 我已经在表格中保存了行。更新时,如果取消选中此复选框,则必须将值重置为默认值。因此,我的复选框仅接收已检查的值,并且我从数据库中获取所有行并将它们首先设置为默认值,然后仅为已检查的行设置所需的值。这是通过2行代码

完成的
\DB::table('tablename')->where('val', '=', $id)->update(['val' => 0]);
  \DB::table('tablename')->whereIn('id', $request->checked)->update(['val' => $id]);

这是一种方法,但是对我来说,当我仅需要将默认行设置为未选中行时,将所有行都设置为默认行是糟糕的。另一种选择是使用foreach,我在控制器中不喜欢它。所以问题1(理论上很重要)-哪个需要更多资源-巨大的sql或foreach?第2季度(实用)-考虑到Laravel

,您将如何解决该问题

1 个答案:

答案 0 :(得分:1)

您可以在第一个查询中添加whereIn的倒数。

\DB::table('tablename')
    ->whereNotIn('id', $request->checked)
    ->where('val', '=', $id)
    ->update(['val' => 0]);