Curso de Laravel Gohu

Ejecutar consultas SQL directas con DB select en Laravel Gohu

Por Víctor Peña · Publicado el

En esta oportunidad aprenderemos a ejecutar consultas SQL directas con DB::select() utilizando Laravel Gohu. En ocasiones necesitamos escribir SQL puro para casos muy específicos o consultas muy optimizadas, y Laravel nos lo permite a través de la fachada DB. Con Laravel Gohu podremos ejecutar estas consultas y visualizar su resultado en formato JSON de inmediato.

¡Hola! ¡Bienvenidos al curso de Laravel Gohu!

¡Empecemos!

Información. Al ejecutar consultas SQL directas trabajamos con la fachada DB, que Laravel Gohu reconoce automáticamente sin necesidad de importarla.

Preparar el entorno de Laravel Gohu

Abre el panel de Laravel Gohu desde la paleta de comandos, selecciona el proyecto Mascotas con el ícono de carpeta y verifica que el indicador de estado esté en verde. Escribimos la consulta en el área de código y pulsamos ▶ Run para ver el resultado.

Consulta básica con DB select

Para ejecutar una consulta SQL directa utilizamos el método DB::select(), pasando la sentencia SQL como una cadena de texto. Obtengamos todos los registros de la tabla «mascotas»:

DB::select('SELECT * FROM mascotas');

Ejecutamos el código y veremos en el área de resultados los registros devueltos por la consulta en formato JSON.

Podemos seleccionar solo algunas columnas, tal como lo haríamos en SQL:

DB::select('SELECT nombre, raza, edad FROM mascotas WHERE tipo = "Perro"');

Consultas con parámetros

Cuando la consulta depende de valores externos, nunca debemos concatenarlos directamente en la cadena SQL, ya que esto abre la puerta a la inyección SQL. En su lugar usamos parámetros con el marcador ? y pasamos los valores en un arreglo como segundo argumento:

DB::select('SELECT * FROM mascotas WHERE tipo = ? AND edad > ?', ['Perro', 2]);

Laravel se encarga de vincular los valores de forma segura antes de ejecutar la consulta.

Advertencia. Evita construir consultas concatenando variables directamente en el texto SQL, por ejemplo "... WHERE tipo = '$tipo'". Utiliza siempre parámetros para prevenir vulnerabilidades de inyección SQL.

Consultas con joins

Con DB::select() también podemos escribir joins en SQL puro. Combinemos «mascotas» con «refugios»:

DB::select('
    SELECT mascotas.nombre AS mascota, refugios.nombre AS refugio, refugios.ciudad
    FROM mascotas
    INNER JOIN refugios ON mascotas.refugio_id = refugios.id
');

Funciones de agregación en SQL

De igual manera, podemos ejecutar funciones de agregación directamente en la sentencia SQL. Contemos las mascotas por tipo:

DB::select('SELECT tipo, COUNT(*) AS total FROM mascotas GROUP BY tipo');

Obtengamos la edad promedio de las mascotas:

DB::select('SELECT AVG(edad) AS edad_promedio FROM mascotas');

Para cerrar

Ejecutar consultas SQL directas con DB::select() y poder visualizar el resultado utilizando Laravel Gohu nos da control total sobre la sentencia que se ejecuta, algo muy útil para consultas complejas o altamente optimizadas. Recuerda utilizar siempre parámetros para mantener la seguridad de tu aplicación.

En la siguiente lección veremos cómo crear, editar y eliminar registros con Eloquent ORM.

Saludos y éxitos.

Norvic Software

Desarrollamos el software que tu empresa necesita

Somos una fábrica de software en Bolivia. Construimos sistemas a medida y aplicaciones móviles, y llevamos Inteligencia Artificial a las empresas que ya tienen un sistema funcionando.

Solicitar cotizaciónVer todos los servicios

Cotización sin costo · Respuesta directa por WhatsApp