Laravel删除查询生成器


Laravel Delete Query Builder

在Laravel 4中Illuminate'Database'QueryBuilderdelete函数接受null作为id参数。这个函数的行为意味着如果我有这样的东西:

DB::table('users')->where('id', $id)->delete();

如果$id将作为null传递,它将截断整个表。这意味着除了标准验证之外,我还必须用! is_null($id)验证包装每个delete语句。这是安全漏洞还是常规做法?

我想你误解了参数的目的。对于您所展示的示例,它只是一个快捷方式。如果你有一个用户ID,你可以删除他们而不写where子句。

DB::table('users')->delete($id);

上面的代码与下面的相同:

DB::table('users')->where('id', $id)->delete();

显然,在使用任何这些方法之前都要执行检查,以确保提供了有效的ID。我不会说这是一个安全漏洞,只是作为开发人员在开发应用程序时需要注意的事情。您不能在没有验证输入的情况下随意删除内容。

 DB::table('table_name')->where('table_id', $request['request_id'])->delete();