Cómo crear un crud en Laravel 5.5 desde cero

Hola que tal, bienvenido a este nuevo artículo en donde aprenderás cómo crear un crud en Laravel 5.5 desde cero, este es un articulo que por así decirlo es una continuación del artículo Cómo instalar y configurar Laravel 5.5 y lo que vamos hacer es básicamente crear las opciones de crear, leer, actualizar y eliminar que son las opciones básicas que tiene una tabla, para esto usaremos Laravel que es un Framework para PHP que como se verá a continuación nos ayuda y nos abstrae la creación de un motón de código simplemente con usar comandos vía consola.

Instalación de Laravel vía composer

Previamente debemos tener instalado XAMPP y en la ubicación C:\xampp\htdocs abrimos una ventana de comandos e instalamos usando el siguientes comando:

Como te darás cuenta dependiendo la velocidad de tu conexión a internet esto puede o no tardar mucho.

Bien, ahora que ya tenemos creado el proyecto lo primero que vamos hacer es cambiar la configuración para la base de datos, usuario y clave, si aún no lo has hecho puedes ver el artículo anterior Cómo instalar y configurar Laravel 5.5 donde explico como hacerlo. El nombre de la base de datos le llamaremos del mismo nombre del proyecto crudlaravel, posteriormente deberás crear la base de datos en MySQL.

Creación de Migraciones

El tema de migraciones en Laravel tiene que ver con el diseño de tablas de nuestra base de datos, y aunque podemos directamente crear nuestra tabla en MySQL crear el controlador y el modelo, lo vamos hacer usando migraciones, cual es la diferencia? Pues la diferencia es que usando migraciones diseñas las tablas como si de modelos se tratarán y luego las puedes generar a MySQL con un sólo comando, además puedes llevar la cronología de la creación de tus tablas y si algo salió mal, por ejemplo te olvidaste de crear un campo, fácilmente haces un rollback y deshaces los cambios. Pero bueno para que se entienda mejor vamos al ejemplo.

La tabla que vamos a crear para el ejemplo se va llamar Libros y contendrá los campos: nombre, resumen, número de páginas, edición, autor y precio.

Para crear la tabla creamos un archivo de migración, para esto vamos a la ventana de comandos abierta anteriormente y usamos el siguiente comando:

Si te das cuenta ahora se creó un nuevo archivo dentro de la carpeta database->migratios 2018_01_26_035203_create_libros_table.php.

Es una clase que hereda de la clase Migration, en esta clase definimos los campos que va contener la tabla Libros, en esta clase hay dos métodos dow que se llama cuando ejecutamos un rollback y up que es donde crearemos los campos para nuestra tabla, el archivo debe quedar como se muestra a continuación:

Ahora lo que nos queda es ejecutar la migración, esto para que se cree nuestra tabla libros, para esto ejecutamos el siguiente comando:

Lo que nos queda es revisar la tabla libros, para esto puedes usar phpMyadmin o si usas MySQL Workbeanch puedes ver que efectivamente se creó la tabla libros junto con otras adicionales.

Bien, como te mencionaba en ciertos casos pueda que que quieras añadir algún campo a alguna tabla que ya está creada, simplemente puedes hacer un rollback, lo que hace en este caso es eliminar las tablas creadas con las migraciones, la base de datos queda vacía sin ninguna tabla, puedes probar el siguiente comando y verás que pasa:

Si de nuevo revisas la base de datos te darás cuenta que la base de datos volvió a su estado inicial y como este comando era sólo para probar, debes volver a generar el comando migrate para crear la tabla libros.

Crear el modelo

Ahora que y tenemos la tabla creada, necesitamos un modelo que mapee los campos a la tabla libros y para esto usamos el comando:

Si vas a la carpeta app del proyecto vas a encontrar un nuevo archivo llamado Libro.php, como te darás cuenta es una clase vacía y en teoría deberíamos crear las propiedades, los setter y getter, pero con la ayuda de Laravel sólo creamos un array $fillable y le pasamos los campos que queremos llenar, así de fácil como se muestra a continuación:

Crear el Controller

Laravel es un Framework que usa el patrón MVC (Modelo, Vista, Controlador), por lo que ahora tenemos que crear el controlador con los métodos index, show, update, delete.

Como te habrás dado cuenta hasta ahora hemos generado todo básicamente a través de comandos y bueno esta vez no es la excepción, así que para crear el controlador usamos el siguiente comando:

Si ahora vas a la carpeta app/Http/Controllers puedes ver que se generó un nuevo archivo VideoController.php y como por arte de magia se crearon todos los métodos que necesitamos, a continuación dejo el código para cada uno de los métodos, que como te darás cuenta es corto y sencillo, puesto que el framework prácticamente hace todo por nosotros.

Crear las rutas

Una ruta en Laravel indica a que método del controlador debe direccionar una petición por ejemplo cuando queramos crear un nuevo libro, editar etc., para esto vamos a la carpeta routes y al archivo web.php el cual debe quedar como sigue:

Crear las vistas

Finalmente lo que vamos hacer es crear las vistas, para mostrar, editar y eliminar libros, para esto vamos a  /resources/views/ y creamos una nueva carpeta llamada layouts y dentro de esta carpeta creamos el archivo layout.blade.php, este archivo tiene la plantilla del proyecto, es importante mencionar que Laravel usa el motor de plantillas blade que junto con HTML permiten crear vistas más simples y limpias.

Archivo index.blade.php

Posteriormente en la ruta /resources/views/ creamos una nueva carpeta llamada Libro que va contener las vistas (index, create, show, edit). Dentro de esta carpeta creamos el archivo index.blade.php como se muestra a continuación:

Archivo create.blade.php

Archivo edit.blade.php

Y bien, como puedes ver que en cuestión de minutos puedes crear un CRUD con Laravel, a continuación dejo el enlace desde el repositorio de Github para que lo descargues Descarga Proyecto.

Nos vemos en un próximo artículo hasta pronto!!

Opt In Image
Te gusta la Programación Web?
Suscríbete ahora y recibe los mejores contenidos sobre Programación Web con Java y PHP en tu correo.

Tus datos estarán protegidos y 100% libre de Spam

Desarrollador Web con Java y PHP, Blogger, aprendiendo y compartiendo conocimientos.

Artículos Recomendados

12 Thoughts to “Cómo crear un crud en Laravel 5.5 desde cero”

  1. Juan Carlos Toapanta

    Buenas tardes, he seguido paso a paso la guía, que esta muy buena, pero cuando quiero hacer correr no obtengo nada en el navegador (la url localhost:8000), solo una página en blanco que dice: “Sorry, the page you are looking for could not be found.”

    1. Elivar Largo

      Hola Juan Carlos, revisa si tienes levantado el servicio de apache y debes apuntar en la URL a localhost/tuproyecto/public

  2. Juan Carlos Toapanta

    Muchas Gracias por responder, si probé de las dos formas la que indique anteriormente y la que acabas de sugerir…La verdad soy nuevo en Laravel y no se si falta algo, pero no me funciona xampp esta levantado…Podrías darme una luz…gracias de antemano.

    1. Elivar Largo

      Debe ser por la ruta que no la encuentra directamente con public, ya que en el archivo routing apunta a libro, prueba apuntando en la url a http://localhost/crudlaravel/public/libro

  3. Juan Carlos Toapanta

    Gracias por tu respuesta, ahora me sale u nuevo error, me indica que no existe la variable libros:

    Así se muestra el error:
    ErrorException (E_ERROR)
    Undefined variable: libros (View: C:\xampp\htdocs\crudlaravel\resources\views\libro\index.blade.php)

    Donde declaro la variable??

    1. Elivar Largo

      Debes haber obviado algún paso, tendrías que revisar de nuevo a ver si algo no hiciste, puedes descargar el proyecto desde git de pronto te sirva https://github.com/elivarl/Crud-Laravel-5.5. Saludos

  4. Juan Carlos Toapanta

    Gracias por responder, te comento que he cargado el proyecto de github y tiene el mismo error, volví a hacer el proyecto con tu tutorial siguendo paso a paso, pero sigue igual, podrías revisarlo y ayudarme a encontrar el error?quiero verlo funcionar y nada que lo puedo hacer…Disculpa las molestias…

    1. Elivar Largo

      EL código de github si está bien. En el blog hay un error en LibroController en el método index es $libros y no $libro, así mismo se debe poner compact(‘libros’) y no libro como estaba, eso también ya está corregido el error en el blog, espero te solucione al problema

  5. Juan Carlos Toapanta

    Muchas gracias por tu ayuda, con los últimos cambios sugeridos ya me mostró la pagina index, si tengo alguna otra novedad te molestaré…Repito ha sido un excelente tutorial…

  6. Juan Carlos Toapanta

    Me surgió un nuevo problema, cuando guardo algo o quiero eliminar, me arroja un error:

    Route [Libro.index] not defined.

    Podrías ayudarme?

    1. Elivar Largo

      Revisa las funciones del controller debes estar llamando a la ruta con el nombre de libro en mayúscula, son errores propios de tu controller

  7. Juan Carlos Toapanta

    Te agradezco por tu tiempo, efectivamente funcionó con todas tus observaciones y modificaciones sugeridas…Podrías ayudarme con tu correo electrónico y/o tu número de whapp para estar en contacto?

Dejar un Comentario