为什么在 Laravel 中的 DB::select 中使用 DB::raw ?

问题描述 投票:0回答:1

当你运行查询并且没有在 Laravel 中使用流畅的查询构建器时,是否必须使用函数

DB::raw

例如

$result = DB::select("SELECT * FROM users");

$result2 = DB::select(DB::raw("SELECT * FROM users"));

在这两种情况下我得到相同的结果。那么为什么需要使用

DB::raw

php mysql laravel
1个回答
16
投票

DB::raw()
用于生成未解析的任意 SQL 命令 查询构建器进一步。因此他们可以 创建一个向量 通过 SQL 注入进行攻击

这意味着,使用

DB::raw()
仅对查询生成器有意义(并且应谨慎使用!)。

虽然

DB::select()
不是 查询生成器。因此,将
DB::raw()
DB::select()
一起使用是没有意义的。

对于模型来说,是否使用它是没有问题的,因为查询构建器的

select()
方法不接受原始 SQL 字符串,因此需要
DB::raw()
将原始 SQL 与模型结合使用的示例

© www.soinside.com 2019 - 2024. All rights reserved.