CRUD de Laravel con MySQL: administrador de canciones

CRUD de Laravel con MySQL o MariaDB

Hoy toca el turno de Laravel (un framework de PHP) para conectarse a la base de datos más popular: MySQL.

Creación de tabla dentro de MySQL con migración de Laravel

Creación de tabla dentro de MySQL con migración de Laravel

En este post voy a explicar cómo conectar Laravel con MySQL o MariaDB, comenzando por configurar la base de datos, pasando a través de las rutas, repasando el motor de plantillas de Blade y tocando un poco el tema de los mensajes flash.

Al final vamos a tener un CRUD o ABC, en donde se verán las operaciones básicas de Laravel con MySQL: insert o insertar, update o actualizar, select o seleccionar y finalmente delete o eliminar.

Aviso

Este CRUD es muy básico y perfecto para los que se inician en Laravel, no creas que no le puse estilos o cosas bonitas por pereza, sino que lo hice lo más simple posible para no confundir al principiante con cosas que no tienen que ver con el motivo principal.

Si no sabes PHP o MySQL, o quieres repasar un poco, dejo unos links que te pueden ayudar:

Descripción del proyecto

La razón por la que he escrito una serie de tutoriales de Laravel es porque el framework es un poco complicado de entender para explicar un simple CRUD con MySQL como el que hicimos con PHP puro.

Por ejemplo, para conectar Laravel con MySQL hay que configurar el archivo .env, establecer las rutas, definir las vistas y trabajar con modelos y migraciones.

Basta de presentaciones: haremos un CRUD de Laravel 5.8 (que debería funcionar perfectamente en otras versiones) con MySQL.

Si eres un principiante de Laravel igualmente puedes comenzar viendo este CRUD que traté de hacer lo más simple posible, aunque ahí están los enlaces a los otros posts por si te interesan.

Lo que vamos a hacer

Haremos un CRUD o ABC con Laravel y MySQL en donde registraremos canciones, las actualizaremos, eliminaremos y listaremos. Todo ello sin escribir una sola consulta SQL.

Recuerda que no veremos relaciones ni normalización, pues vamos a hacerlo lo más simple posible.

El código fuente está disponible en Github, por si vas no olvides seguirme.

Base de datos y tablas

La base de datos se llama canciones_laravel. El esquema se ve así:

Recuerda que no es necesario que hagas la tabla, dejo el esquema para guiarte o como último recurso; de ahí basta con que ejecutes el comando php artisan migrate para que las migraciones se ejecuten. De hecho la única migración es esta.

Nota: no te preocupes por las inyecciones SQL, si usas el ORM de Laravel o la fachada de DB no hay problema.

Vistas con Blade

He definido una plantilla maestra y a partir de ella extiendo las demás. Pondré únicamente la maestra, pues las demás las puedes ver en el repositorio.

Pongo algunos estilos, el pie que va en común y permito cambiar el título por las vistas que son extendidas.

También tengo dos enlaces que son formados de acuerdo al nombre de las rutas que existen en web.php, las cuales veremos más abajo.

Mensajes flash

Para avisar que la canción fue eliminada, creada o actualizada utilizo los mensajes flash como se verá en el controlador. En Blade los muestro comprobando si hay un mensaje con session.

En el controlador se verá cómo se envían, pero como un adelanto diré que es con el método with.

El modelo

Solamente vamos a trabajar con un modelo, el cual se llama Cancion. Lo generé con:

php artisan make:model Cancion

Aunque igual y se podía simplemente crear un archivo dentro de la carpeta app.

Su definición queda así:

Parece simple pero con él vamos a realizar el CRUD, pues al extender de Model tiene todos los métodos del ORM de Laravel. El punto es que hay dos propiedades:

  • El nombre de la tabla, que no es necesario especificar pero si no lo hiciera, Laravel lo haría por mí con un nombre como “cancion”.
  • Los timestamps establecidos en false. Esto es porque no queremos llevar un registro de cuándo se actualizó o eliminó un elemento.

Nota: si quieres que lleven esos dos campos, en tu migración llama a $table->timestamps();

El controlador de las canciones

El controlador es el que se encarga de pegar la vista y el modelo. Queda así (ábrelo en el repositorio si quieres):

La cosa importante que debemos notar es que usamos el modelo para todo, y que en ningún momento estamos escribiendo una consulta SQL; todo es a través del modelo.

Para eliminar llamamos a $cancion->delete(), para guardar cambios o insertar una nueva llamamos a $cancion->save() y finalmente para obtener todas las canciones a Cancion::get();

Un método que me gusta mucho es el de findOrFail, el cual busca por id o falla; es decir, si no encuentra la canción muestra un error 404 en lugar de que intente eliminar u obtener un dato que no existe.

Antes de llamar a $cancion->save() le ponemos todos sus datos con las propiedades mágicas. Es decir, cada columna de la base de datos se representa por una propiedad. Un ejemplo es cuando le ponemos el nombre:

$cancion->nombre = $peticion->nombre;

Para obtener los datos que se enviaron por el formulario accedemos a la variable $peticion que es una instancia de Request, y Request trae de una forma cómoda lo que sea que haya sido enviado.

Finalmente en muchos casos redireccionamos a otras rutas con datos flash o flash data que muestran un mensaje de una sola vez.

Las rutas web

Ahora veamos el lugar en donde exponemos nuestra app: las rutas. Solamente fue cuestión de modificar el archivo web.php como vimos en el tutorial de rutas.

Puedes ver el archivo actualizado dentro del repositorio, y también dejo aquí el código:

A cada ruta le pongo un nombre para luego crear un enlace en las vistas de Blade.

Poniendo todo junto

Con eso que configuramos y codificamos nuestra app ya está lista. Ahora basta con ir al sitio en donde lo tenemos alojado y podemos comenzar a probar. Aquí dejo un GIF de cómo se ve:

Demostrar CRUD de MySQL con Laravel

Demostrar CRUD de MySQL con Laravel

 

Recuerda que eres libre de descargar y probar por ti mismo el proyecto. Si tienes dudas déjalas en los comentarios.

¿Quieres aprender más de Laravel? haz click aquí.

CRUD de Laravel con MySQL: administrador de canciones

Por parzibyte Tiempo de lectura: 5 min
1