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:
Ver ejemplo de código
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
Ver ejemplo de código
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".
app/Http/Controllers/NoticiaController.php
Ver ejemplo de código
El controlador extiende a la clase
Controller principal, igual que el
AppController que crearemos manualmente, y utilizará la clase I
lluminate\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
Ver ejemplo de código
Con este archivo podremos crear la tabla noticias desde la consola, si bien previamente deberíamos modificarlo para que incluya los campos necesarios:
Ver ejemplo de código
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:
Ver ejemplo de código
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:
Ver ejemplo de código
En el siguiente apartado mostraremos estas noticias en las distintas vistas del
front-end.