Cargando

Ir a contenido

X

 


Hacer Consultas Directas SQL en Laravel

En este tutorial veremos cómo hacer consultas SQL de forma directa contra la base de datos en una aplicación hecha en Laravel.


Escrito por jul 25 2014 18:17


A pesar de todas las facilidades que nos da Laravel para la manipulación de los datos y las estructuras de datos, aún existen personas que prefieren realizar parte del proceso de manipulación directamente, para ello debemos utilizar consultas explicitas o directas.

Si bien no está mal, hay que tener mucho cuidado ya que al hacer consultas directas podemos exponer nuestra aplicación o disminuir su rendimiento, sin embargo si sabemos lo que estamos haciendo, podemos obtener algunas cosas que debido a su complejidad sería difícil lograrlo de otra forma.

¿Cómo lograrlo?


Para incorporar estas consultas directas podemos incorporar datos dentro de un archivo de migraciones, con ello podemos garantizar que mantengamos los históricos de nuestros cambios y de esta forma si necesitamos volver a un estado anterior en nuestra base de datos lo podemos hacer.

Partamos de la premisa que tenemos una tabla en nuestra base de datos, para crear una migración donde añadamos datos de forma manual hacemos lo siguiente:

· Vamos a generar la migración de agregar datos con el siguiente código:


php artisan migrate:make add_data_to_shows_table

· Esto nos debe generar un archivo del estilo 2014_07_02_222551_add_data_to_shows_table.php donde la numeración corresponde a la fecha de la generación del archivo.


· Veamos ahora en la siguiente imagen un código ejemplo que podemos añadir en el método up():


laravel_consul_sql.jpg


Vemos que hemos preparado un pequeño set de datos con 3 registros, hasta ahora todo ha sido muy sencillo, ahora veremos cómo podemos hacer las consultas directas.

Generar la Consulta SQL Directa


Para poder hacer las consultas directas debemos seguir los siguientes pasos.

1- Debemos en primer lugar generar un modelo, para ello en nuestra aplicación en el directorio app/models crearemos un archivo llamado Show.php, este nombre es el singular de la base de datos, de esta forma con la convención de Laravel podemos utilizarlo. Veamos que llevará nuestro modelo:


laravel_consul_sql2.jpg


Dentro de la clase vemos que hemos creado manualmente una consulta SQL que consulta todos los datos y hemos hecho un condicional donde podemos agregar una cláusula para ordenar nuestros datos, en caso que no le pasemos estos argumentos, la consulta se generará sin el ordenamiento.

2- Ya que tenemos el set de datos creados, vamos a generar una ruta donde podamos llamar a nuestra consulta con SQL directo, para ello debemos agregar el código correspondiente en el archivo routes.php con el siguiente contenido que vemos en la imagen:


laravel_consul_sql3.jpg


Vemos entonces que creamos un objeto del modelo que declaramos en el paso anterior, luego llamamos al método que le incluimos y le pasamos un campo y una orientación para que haga el order by de la respuesta de los resultados, finalmente utilizamos el método helper de Laravel dd() para mostrar los datos, en una aplicación normal en vez de este método helper podríamos enviar los resultados a una vista para iterar sobre ellos.

Como vemos es muy sencillo realizar una consulta directa SQL en Laravel, solo debemos crear el método en el modelo y a través de este podremos acceder a las consultas.
¿Te ha gustado y ayudado este Tutorial?
Puedes premiar al autor pulsando este botón para darle un punto positivo
  • -
  • 0


AYUDA A MEJORAR ESTE TUTORIAL!

¿Quieres ayudarnos a mejorar este tutorial más? Puedes enviar tu Revisión con los cambios que considere útiles. Ya hay 0 usuario que han contribuido en este tutorial al enviar sus Revisiones. ¡Puedes ser el próximo!


Tutoriales Relacionados



Sin comentarios, sé el primero!

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!
10
VOTA
5
100%
4
0%
3
0%
2
0%
1
0%

  Información

  •   Publicado jul 25 2014 18:17
  •   Actualizado jul 28 2014 17:52
  •   Visitas 3.7K
  •   Nivel
    Avanzado