CRUD Laravel usando Resources, Controllers, Models y Migrations

Crear un CRUD de Laravel generando código con artisan

Este es un tutorial que se basa en mi experiencia con Laravel. Te mostraré cómo crear un CRUD de cualquier entidad en pocos minutos, es decir, de manera muy rápida, usando:

  • Resources
  • Controllers
  • Models
  • Migrations

Todo esto usando artisan para generar el código. Verás que una vez que lo sepas, dejarás que artisan genere el código base.

Esto es un tip de productividad con Laravel.

¿Qué vamos a hacer?

Vamos a crear un CRUD simple de una entidad: nivel escolar. Es decir, un nivel de la escuela, como primario, secundario, etcétera. No es necesario que entiendas la entidad, sino sus datos, que son:

  • id
  • nombre
  • timestamps

¡Vamos allá!

Generando modelo y migración

Comenzamos generando nuestro modelo o entidad, además de una migración. Recuerda que una migración es una modificación que le haces a la estructura de la base de datos. Ejecutamos:

php artisan make:model Nivel -m

La opción -m es para crear la migración. Ahora se habrá creado el modelo en App\Nivel, y la migración en migrations.

Comencemos viendo el modelo, le vamos a definir las propiedades fillables y el nombre de la tabla:

Ya verás por qué llenamos los fillables más tarde. Ahora miremos la migración, le vamos a arreglar el nombre de la tabla de igual forma, y a definir las columnas:

Es momento de hacer la migración:

php artisan migrate

Ahora en tu base de datos debe existir la tabla con las columnas:

Ya tenemos lista la tabla y el modelo.

Crear controlador tipo resource

El modelo ya está definido, ahora vamos a definir el controlador, pero será un controlador de tipo resource; es decir, va a manejar las operaciones más básicas. Lo creamos con:

php artisan make:controller NivelesController --resource --model=Nivel

Con la opción --resource indicamos que será un controlador resource. La opción --model indica el modelo que usará o al que se referirá ese controlador.

Se debió crear un archivo algo así:

Registrar resource

El controlador ya está creado, pero todavía no está expuesto en las rutas. Dentro de las rutas web usamos:

Estamos especificando los parámetros por eso de plural y singular, pues en este caso Laravel pensará que el singular de “niveles” es “nivele”, cosa incorrecta; así que le indicamos que el singular de niveles es nivel.

Eso registrará todas las rutas de ese controlador y dará unos nombres que harán la programación más fácil, pues creará:

  • niveles.index
  • niveles.create
  • niveles.edit
  • etcétera

Es decir, le dará un nombre a cada ruta. Así, al hacer una redirección no debemos poner la ruta, sino que podemos poner simplemente su nombre.

CRUD

Ahora sí vamos a ver el CRUD en donde vamos a definir las vistas con formularios, tablas, etcétera. Yo usaré Bootstrap pero esto no tiene que ver mucho con el estilo, el punto es que entiendas el punto.

Las vistas irán dentro de una carpeta que tiene el mismo nombre que el modelo, es decir, habrá un directorio llamado niveles.

La nomenclatura que uso es:

  • modelo_edit.blade.php
  • modelo_index.blade.php
  • modelo_create.blade.php

En este caso “modelo” será niveles.

Create

Comenzamos con create. Definimos la vista:

Create
Create

Ahora dentro del controlador modificamos dos funciones. La primera es la que muestra la vista y se ve así:

Más tarde, modificamos store, que es en donde el modelo se guarda dentro de la base de datos:

¿Recuerdas las propiedades fillables? aquí las estamos usando

Presta atención a la línea en donde creamos un nuevo Nivel. Lo llenamos con $request->input(), es decir, llenamos sus propiedades directamente del formulario. Los fillables indican cuáles datos son “seguros” de llenar por el usuario de manera automática.

Read o index

Veamos ahora el index. Aquí es en donde se listan los niveles. Creamos la vista:

Index - Mostrar modelos en Laravel
Index – Mostrar modelos en Laravel

Dentro del controlador regresamos la vista con los niveles usando Nivel::all() para traer todos los datos.

Al dibujar la tabla creamos algunos enlaces que llevarán a edit o delete.

Edit y update

De igual forma creamos la vista:

Por favor nota cómo es que definimos las rutas, el método y varias cosas aprovechando el resource; podemos pasar el modelo directamente.

Ahora vamos a ver el controlador, comenzando por mostrar la vista:

Se devuelve la vista del formulario, pero le pasamos el modelo para que rellene los datos. También vamos a preparar el método que actualiza al modelo en la base de datos:

Al invocar a fill, de nuevo llenamos o hidratamos al modelo con el formulario. Lo guardamos y volvemos al index.

Delete

Para terminar veamos cómo eliminar. Recuerda que la ruta del delete ya está al listar los elementos y es de hecho un formulario que se envía.

Lo que tenemos que hacer es, desde el controlador, eliminar al modelo. Queda así:

Debido a que ya tenemos el modelo como argumento en la función, y a su vez es un modelo de Eloquent, invocamos a delete y eso es todo.

Poniendo todo junto y probando CRUD

Eso es todo lo necesario. Ahora podemos probar.

CRUD Laravel usando Resources, Controllers, Models y Migrations
CRUD Laravel usando Resources, Controllers, Models y Migrations

Como puedes ver hemos creado un CRUD usando Laravel, generando código con artisan.

Te invito a leer más sobre Laravel en mi blog.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

2 comentarios en “Crear un CRUD de Laravel generando código con artisan”

Dejar un comentario