当你运行查询并且没有在 Laravel 中使用流畅的查询构建器时,是否必须使用函数
DB::raw
?
例如
$result = DB::select("SELECT * FROM users");
$result2 = DB::select(DB::raw("SELECT * FROM users"));
在这两种情况下我得到相同的结果。那么为什么需要使用
DB::raw
?
用于生成未解析的任意 SQL 命令 查询构建器进一步。因此他们可以 创建一个向量 通过 SQL 注入进行攻击。DB::raw()
这意味着,使用
DB::raw()
仅对查询生成器有意义(并且应谨慎使用!)。
虽然
DB::select()
不是 查询生成器。因此,将 DB::raw()
与 DB::select()
一起使用是没有意义的。
对于模型来说,是否使用它是没有问题的,因为查询构建器的
select()
方法不接受原始 SQL 字符串,因此需要 DB::raw()
。 将原始 SQL 与模型结合使用的示例。