Php:节省服务器资源 - 理论上
Php: Saving Server resources - theoretical
(使用Laravel)
我在 table 中保存了行。在更新时,如果我取消选中复选框,则该值必须重置为默认值。所以我的复选框只接收选中的值,我从数据库中获取所有行并首先将它们设置为默认值,然后我只为选中的行设置所需的值。这是在 2 行代码中完成的,
\DB::table('tablename')->where('val', '=', $id)->update(['val' => 0]);
\DB::table('tablename')->whereIn('id', $request->checked)->update(['val' => $id]);
这是一种方法,但对我来说,当我只需要设置默认值而不是选中的行时,将所有行设置为默认值是很糟糕的。另一种选择是使用 foreach,我不喜欢在控制器中使用它。所以问题 1(理论上的和重要的)——哪个需要更多的资源——巨大的 sql 还是 foreach? Q2(实用)-考虑到它 Laravel
你会如何解决这个问题
您可以将 whereIn 的逆运算添加到您的第一个查询中。
\DB::table('tablename')
->whereNotIn('id', $request->checked)
->where('val', '=', $id)
->update(['val' => 0]);
(使用Laravel) 我在 table 中保存了行。在更新时,如果我取消选中复选框,则该值必须重置为默认值。所以我的复选框只接收选中的值,我从数据库中获取所有行并首先将它们设置为默认值,然后我只为选中的行设置所需的值。这是在 2 行代码中完成的,
\DB::table('tablename')->where('val', '=', $id)->update(['val' => 0]);
\DB::table('tablename')->whereIn('id', $request->checked)->update(['val' => $id]);
这是一种方法,但对我来说,当我只需要设置默认值而不是选中的行时,将所有行设置为默认值是很糟糕的。另一种选择是使用 foreach,我不喜欢在控制器中使用它。所以问题 1(理论上的和重要的)——哪个需要更多的资源——巨大的 sql 还是 foreach? Q2(实用)-考虑到它 Laravel
你会如何解决这个问题您可以将 whereIn 的逆运算添加到您的第一个查询中。
\DB::table('tablename')
->whereNotIn('id', $request->checked)
->where('val', '=', $id)
->update(['val' => 0]);