laravel

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:

See the gist on github.

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:

See the gist on github.

Es momento de hacer la migración:

php artisan migrate

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

See the gist on github.

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í:

See the gist on github.

Registrar resource

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

See the gist on github.

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:

See the gist on github.

Create

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

See the gist on github.

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

See the gist on github.

¿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:

See the gist on github.

Index – Mostrar modelos en Laravel

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

See the gist on github.

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

Edit y update

De igual forma creamos la vista:

See the gist on github.

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:

See the gist on github.

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:

See the gist on github.

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í:

See the gist on github.

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

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.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

Entradas recientes

Imprimir PDF con Bot de Telegram

La impresión de un PDF en cualquier impresora se puede automatizar con un bot de…

4 días hace

Enviar mensaje con bot de Telegram usando JavaScript (lado del cliente)

Hoy te enseñaré cómo enviar un mensaje a un usuario desde un bot de Telegram…

4 días hace

PHP: incrustar imagen en base64

El día de hoy te enseñaré algo muy sencillo pero útil al programar con PHP:…

4 días hace

Plugin ESC POS – Actualización 3.4.0: imprimir HTML

El plugin para imprimir en impresoras térmicas alcanza hoy su versión 3.4.0 agregando soporte para…

6 días hace

JavaScript (lado del cliente): leer pixeles de imagen

En ocasiones es necesario leer los pixeles y colores de una imagen con JavaScript del…

2 semanas hace

PHP y JavaScript: llenar select con AJAX

Siguiendo con los tutoriales de listas desplegables o select con JavaScript, vamos a ver cómo…

2 semanas hace

Esta web usa cookies.