jairogarcíarincón
06/09/2023
Contenidos
- Objetivos
- Instalación
- Configuración
- Base de datos
- Plug-ins
- Enrutando la home
- Layout y rutas del front-end
- Noticias en el front-end
- Resto de vistas del front-end
- Auth
- Layout del back-end
- Vistas y acciones de Auth
- Usuarios en el back-end
- Noticias en el back-end
- Helpers
- Paginación de noticias
- API de noticias
- Cambiar contraseña con envío de email
- Conclusiones
- Práctica: CMS con Laravel
Introducción
En este apartado aprenderemos a trabajar con un modelo en Laravel, aprendiendo la manera de crear además tanto la tabla de la base de datos asociada a ese modelo como su controlador.
Creación de archivos
Vamos a utilizar el comando artisan para la creación rápida de controladores y modelos.
Los controladores se crearán dentro de la carpeta app/Http/Controllers, mientras que los modelos se crearán en app/Http/Models.
Dicho esto, el comando para crear un modelo Noticia desde la consola, así como su controlador NoticiaController asociado (flag -c) y un archivo de migration para la posterior creación de la tabla (flag -m) sería el siguiente:
Si ahora revisas tus carpetas app/Http/Controllers y database/migrations (probablemente tengas que actualizarlas en tu IDE o bien volverlas a descargar por completo), comprobarás que se han creado diferentes archivos.
app/Models/Noticia
Todos los modelos que creemos extenderán la clase Illuminate\Database\Eloquent\Model, lo cual nos permitirá, como veremos más adelante, trabajar con la tabla de la base de datos de manera muy sencilla.
Por defecto y convención del inglés, el modelo trabajará con una tabla cuyo nombre será el nombre del modelo en minúsculas seguido de una s (noticias), si bien eso lo podríamos cambiar añadiendo al modelo la variable protegida $table = "nombre-de-la-tabla".
El controlador extiende a la clase Controller principal, igual que el AppController que crearemos manualmente, y utilizará la clase Illuminate\Http\Request para gestionar los formularios.
Más adelante añadiremos métodos para las acciones que necesitemos (listar, editar, crear, activar, mostrar en home, etc.).
database/migrations/yyyy_mm_dd_hhiiss_create_noticias_table.php
Con este archivo podremos crear la tabla noticias desde la consola, si bien previamente deberíamos modificarlo para que incluya los campos necesarios:
Todas las opciones disponibles las puedes encontrar en la dirección https://laravel.com/docs/8.x/migrations.
Realizar la migración
Para finalizar, tan solo debes ejecutar desde la consola el comando:
Si ahora consultas tu base de datos, verás que se ha creado la tabla noticias con todos los campos indicados, así como la tabla migrations para almacenar las migraciones que ya se han ejecutado y las tablas users y otras más, que estaban pendientes de una migración por defecto de Laravel y de las que hablaremos en el apartado de usuarios (Auth).
IMPORTANTE: Si estás en la consola como usuario root, al ejecutar el comando anterior es posible que se haya generado un archivo de log con usuario root que Laravel no es capaz de leer, lanzando un error de permisos en el navegador.
Para resolverlo, modifica el usuario de dicho archivo (o directamente de la carpeta storage/logs) completa para que pertenezca a www-data:www-data mediante el comando sudo chown -R www-data:www-data storage/logs (desde la raíz de tu proyecto).
Creación de contenido de ejemplo
Una vez creada la tabla y para finalizar este apartado, podríamos añadir contenido de ejemplo desde la consola SQL de la siguiente forma:
En el siguiente apartado mostraremos estas noticias en las distintas vistas del front-end.
Publicado el 17 de Enero de 2025
bloggestor de contenidoslaravelphpcssjquery