¿Cómo consigo que el generador de consultas genere su consulta SQL sin formato como una cadena?

Resuelto meiryo asked hace 54 años • 38 respuestas

Dado el siguiente código:

DB::table('users')->get();

Quiero obtener la cadena de consulta SQL sin formato que generará el generador de consultas de base de datos anterior. En este ejemplo sería SELECT * FROM users.

¿Cómo hago esto?

meiryo avatar Jan 01 '70 08:01 meiryo
Aceptado

Utilice el toSql()método en una QueryBuilderinstancia.

DB::table('users')->toSql()volvería:

seleccione * de `usuarios`

Esto es más fácil que conectar un detector de eventos y también le permite verificar cómo se verá realmente la consulta en cualquier momento mientras la crea.

Nota: Este método funciona para el generador de consultas o Eloquent, sin embargo, toSql()se usa en lugar de first()o get(). No puede ejecutar la consulta y obtener el SQL al mismo tiempo utilizando este método.

Steven Mercatante avatar Dec 04 '2013 18:12 Steven Mercatante

Para mostrar en la pantalla las últimas consultas ejecutadas, puede usar esto:

\DB::enableQueryLog(); // Enable query log

// Your Eloquent query executed by using get()

dd(\DB::getQueryLog()); // Show results of log

Creo que las consultas más recientes estarán al final de la matriz.

Tendrás algo como esto:

array(1) {
  [0]=>
  array(3) {
    ["query"]=>
    string(21) "select * from "users""
    ["bindings"]=>
    array(0) {
    }
    ["time"]=>
    string(4) "0.92"
  }
}

(Gracias al comentario de Joshua a continuación).

jfortunato avatar Aug 14 '2013 15:08 jfortunato