2015-08-05 8 views
6

Ist es erforderlich, die Funktion DB::raw zu verwenden, wenn Sie eine Abfrage ausführen und Sie nicht den fließenden Abfrage-Generator in Laravel verwenden?Warum DB :: Raw in DB :: in Laravel auswählen?

z.B.

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

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

Ich bekomme das gleiche Ergebnis in beiden Fällen. Warum ist es notwendig, DB::raw zu verwenden?

Antwort

3

DB::raw() wird verwendet, beliebige SQL-Befehle zu machen, die weiter durch den Query Builder nicht analysiert werden. Sie können daher create a vector for attack über SQL-Injection.

Überprüfen Sie diese ref. Link, mit mehr Details: http://fideloper.com/laravel-raw-queries

Example von DB::raw und DB::select

+0

So in meinem Beispiel denke ich, dass die Abfrage mit DB :: raw schneller ist, da Laravel nicht oder irgendetwas validieren überprüft. – Curri

+0

Ich werde ja sagen, Sie können davon ausgehen/schließen, dass Sie in einigen Fällen wie dieses Beispiel (http://stackoverflow.com/questions/27410909/laravel-create-trigger-from-migration/27418738#27418738) 'verwenden können DB :: raw' alone, wenn die SQL-Anweisung nur für den internen Gebrauch bestimmt ist. und du bist dir sicher, dass es zufrieden ist. –