Php 查询生成器中的原始查询是否可以使用laravel查询生成器保护sql注入?

Php 查询生成器中的原始查询是否可以使用laravel查询生成器保护sql注入?,php,laravel-5,postgresql-9.2,Php,Laravel 5,Postgresql 9.2,我想知道我们什么时候在laravel query builer中使用查询生成器内部的原始查询,如下所示 $salesdata = DB::table('HEADER') ->join('BRANCH', 'HEADER.BRANCHCODE', '=', 'BRANCH.BRANCHCODE') ->select('HEADER.BRANCHCODE','BRANCH.BRANCHNAME',

我想知道我们什么时候在laravel query builer中使用查询生成器内部的原始查询,如下所示

   $salesdata = DB::table('HEADER')
                ->join('BRANCH', 'HEADER.BRANCHCODE', '=', 'BRANCH.BRANCHCODE')
                ->select('HEADER.BRANCHCODE','BRANCH.BRANCHNAME',
                    DB::raw('SUM("HEADER"."AMT") as netamt'),
                    DB::raw('SUM("HEADER"."AMT") + SUM("HEADER"."DISCOUNT")- SUM("HEADER"."TAX1")- SUM("T_CASH_HEADER"."TAX2") as grossamt'),'BRANCH.BRANCHNAME',
                    DB::raw('SUM("HEADER"."COVER") as NetCover'),
                    DB::raw('SUM("HEADER"."DISCOUNT") as discount'),DB::raw('SUM("HEADER"."TAX1") as tax'),DB::raw('round(SUM("HEADER"."AMT")/SUM("HEADER"."COVER"),2) as avg'))
                ->whereBetween('HEADER.INVOICEDATE', [$fromDate, $toDate])
                ->groupBy('BRANCH.BRANCHCODE','BRANCH.BRANCHNAME','HEADER.BRANCHCODE')
                ->orderBy('AMT','ASC')
                ->get();

我想知道上面的查询可以确保使用laravel进行sql注入。

否,除了->wherebeween'HEADER.INVOICEDATE'、[$fromDate,$toDate]语句之外,您没有向select语句传递任何用户输入,这将使用PDO参数绑定来防止sql注入。所以,它是安全的

您必须查看laravel源代码,看看它对您提供的变量做了什么。希望它能对它们进行参数化。如果他事先也使用DateTime类验证字符串,他将确定输入是安全的