Ver el SQL generado por Laravel

arrow_back Blog

Muchas veces necesitamos ver el SQL generado por Laravel, sea utilizando el QueryBuilder o Eloquent. La forma más sencilla de conseguir el SQL generado por Laravel es haciendo uso del método toSql(), el cual funciona muy bien, pero nos encontramos con un problema, no veremos las consultas de las relaciones:

Podemos ver que haciendo uso del método with y solicitando algunas relaciones, el resultado final no es el esperado.

Ver el SQL de las relaciones en Laravel

Por suerte para nosotros, tenemos una solución sencilla, y es hacer uso de la clase DB y el queryLog de Laravel de la siguiente forma:

Como puedes ver, ahora sí podemos ver el resultado de todas las consultas, incluso de los parámetros utilizados a través de clave bindings si los hubiera.

Generar un log de todo el SQL de forma global

Otra solución que también funciona muy bien es hacer uso del método listen de la clase DB para que cada vez que una consulta sea generada en la aplicación podamos hacer con ella lo que necesitemos, en este caso hacer un log.

Para ello, debemos tener en cuenta que este es un proceso que se va a ejecutar muchas veces al día, y que es algo que sólo debemos ejecutar en entornos de desarrollo, no en producción.

Mi solución a esto es la siguiente:

Nuestro ServiceProvider hará un log de todas las consultas generadas en nuestra aplicación siempre que el valor de la variable de entorno APP_ENV de nuestro .env sea local.

El resultado de nuestro ejemplo sería un archivo con nombre queries-2023-01-08.log con el siguiente contenido:

Recuerda registrar tu ServiceProvider en el archivo config/app.php si lo has creado igual que yo:

Espero que esta entrada te haya ayudado a tener una completa solución para poder ver el SQL generado en tus proyectos Laravel.

Cursosdesarrolloweb Cursosdesarrolloweb

Cursosdesarrolloweb es una plataforma educativa con cursos y tutoriales en texto y vídeo.

Términos y condiciones Política de privacidad Formulario de contacto

Copyright 2024 © Todos los derechos reservados.

Contacto