¿Cómo consigo que el generador de consultas genere su consulta SQL sin formato como una cadena?
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?
Utilice el toSql()
método en una QueryBuilder
instancia.
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.
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).