Ejercicios
Ejercicios
En estos ejercicios vamos a continuar con el proyecto del videoclub que habíamos empezado en sesiones anteriores y le añadiremos todo lo referente a la gestión de la base de datos.
Ejercicio 1 - Configuración de la base de datos y migraciones (1 punto)
En primer lugar vamos a configurar correctamente la base de datos. Para esto tenemos que actualizar el fichero .env
para indicar que vamos a usar una base de datos tipo MySQL llamada "videoclub
" junto con el nombre de usuario y contraseña de acceso.
Nota: XAMPP por defecto crea el usuario de base de datos root sin contraseña.
A continuación abrimos PHPMyAdmin y creamos la nueva base de datos llamada videoclub
. Para comprobar que todo se ha configurado correctamente vamos a un terminal en la carpeta de nuestro proyecto y ejecutamos el comando que crea la tabla de migraciones. Si todo va bien podremos actualizar desde PHPMyAdmin y comprobar que se ha creado esta tabla dentro de nuestra nueva base de datos.
Si nos diese algún error tendremos que revisar los valores indicados en el fichero
.env
. En caso de ser correctos es posible que también tengamos que reiniciar el servidor o terminal que tengamos abierto.
Ahora vamos a crear la tabla que utilizaremos para almacenar el catálogo de películas. Ejecuta el comando de Artisan para crear la migración llamada create_movies_table
para la tabla movies
. Una vez creado edita este fichero para añadir todos los campos necesarios, estos son:
Campo | Tipo | Valor por defecto |
id | Autoincremental | |
title | String | |
year | String de longitud 8 | |
director | String de longitud 64 | |
poster | String | |
rented | Booleano | false |
synopsis | Text | |
timestamps | Timestamps de Eloquent |
Recuerda que en el método
down
de la migración tienes que deshacer los cambios que has hecho en el métodoup
, en este caso sería eliminar la tabla.
Por último ejecutaremos el comando de Artisan que añade las nuevas migraciones y comprobaremos en PHPMyAdmin que la tabla se ha creado correctamente con los campos que le hemos indicado.
Ejercicio 2 - Modelo de datos (0.5 puntos)
En este ejercicio vamos a crear el modelo de datos asociado con la tabla movies. Para esto usaremos el comando apropiado de Artisan para crear el modelo llamado Movie
.
Una vez creado este fichero lo abriremos y comprobaremos que el nombre de la clase sea el correcto y que herede de la clase Model
. Y ya está, no es necesario hacer nada más, el cuerpo de la clase puede estar vacío ({}
), todo lo demás se hace automáticamente!
Ejercicio 3 - Semillas (1 punto)
Ahora vamos a proceder a rellenar la tabla de la base de datos con los datos iniciales. Para esto editamos el fichero de semillas situado en database/seeds/DatabaseSeeder.php
y seguiremos los siguientes pasos:
Creamos un método privado (dentro de la misma clase) llamado
seedCatalog()
que se tendrá que llamar desde el métodorun
de la forma:Movemos el array de películas que se facilitaba en los materiales y que habíamos copiado dentro del controlador
CatalogController
a la clase de semillas (DatabaseSeeder.php
), guardándolo de la misma forma, como variable privada de la clase.Dentro del nuevo método
seedCatalog()
realizamos las siguientes acciones:En primer lugar borramos el contenido de la tabla
movies
conDB::table('movies')->delete();
.Y a continuación añadimos el siguiente código:
Por último tendremos que ejecutar el comando de Artisan que procesa las semillas y una vez realizado abriremos PHPMyAdmin para comprobar que se rellenado la tabla movies con el listado de películas.
Si te aparece el error "Fatal error: Class 'Movie' not found" revisa si has indicado el espacio de nombres del modelo que vas a utilizar (
use App\Movie;
).
Ejercicio 4 - Uso de la base de datos (1 punto)
En este último ejercicio vamos a actualizar los métodos del controlador CatalogController
para que obtengan los datos desde la base de datos. Seguiremos los siguientes pasos:
Modificar el método
getIndex
para que obtenga toda la lista de películas desde la base de datos usando el modeloMovie
y que se la pase a la vista.Modificar el método
getShow
para que obtenga la película pasada por parámetro usando el métodofindOrFail
y se la pase a la vista.Modificar el método
getEdit
para que obtenga la película pasada por parámetro usando el métodofindOrFail
y se la pase a la vista.
Si al probarlo te aparece el error "Class 'App\Http\Controllers\Movie' not found" revisa si has indicado el espacio de nombres del modelo que vas a utilizar (
use App\Movie;
).
Ya no necesitaremos más el array de películas ($arrayPeliculas
) que habíamos puesto en el controlador, así que lo podemos comentar o eliminar.
Ahora tendremos que actualizar las vistas para que en lugar de acceder a los datos del array los obtenga del objeto con la película. Para esto cambiaremos en todos los sitios donde hayamos puesto $pelicula['campo']
por $pelicula->campo
.
Además, en la vista catalog/index.blade.php
, en vez de utilizar el índice del array ($key
) como identificador para crear el enlace a catalog/show/{id}
, tendremos que utilizar el campo id
de la película ($pelicula->id
). Lo mismo en la vista catalog/show.blade.php
, para generar el enlace de editar película tendremos que añadir el identificador de la película a la ruta catalog/edit
.
Last updated