Laravel查询生成器,选择原始或选择并原始

pmi*_*nda 5 laravel laravel-query-builder

之间有什么区别:

DB::table('some_table')
->selectRaw('COUNT(*) AS result')
->get();
Run Code Online (Sandbox Code Playgroud)

和:

DB::select(DB::raw(" 
SELECT COUNT(*) AS result
FROM some_table"));
Run Code Online (Sandbox Code Playgroud)

他们在文档https://laravel.com/docs/5.6/queries中广告有关使用raw()适当的SQL注入,但是与selectRaw?相同。

Olu*_*kin 7

两者的最终结果相同,即存在一些区别:

第一个:

DB::table('some_table')
    ->selectRaw('COUNT(*) AS result')
    ->get();
Run Code Online (Sandbox Code Playgroud)
  • 返回PHP对象的集合,
  • 您可以流畅地调用collection方法
  • 比较干净。

而第二个:

DB::select(DB::raw(" 
    SELECT COUNT(*) AS result
    FROM some_table"
));
Run Code Online (Sandbox Code Playgroud)
  • 返回一个Php对象数组

尽管它们具有相似之处:原始查询字符串。