Práctica: Migraciones y Modelos en Laravel
Objetivo de la actividad

El objetivo de esta práctica es aprender a crear y gestionar la estructura de una base de datos mediante migraciones y a vincular las tablas con modelos de Eloquent aplicando las convenciones y propiedades adecuadas de Laravel.
Al finalizar la práctica deberás ser capaz de:
- Crear y modificar tablas utilizando migraciones.
- Comprender el funcionamiento de los métodos
up()ydown(). - Definir claves primarias personalizadas.
- Asociar un modelo Eloquent con su tabla correspondiente.
- Usar correctamente las propiedades
$table,$primaryKey,$incrementing,$keyTypey$fillable.
1. Crear la migración inicial de employees
El primer paso será crear una migración que defina la tabla employees, encargada de almacenar los datos básicos de los empleados.
Pasos
-
Accede al entorno PHP del proyecto (contenedor o terminal). Si trabajas con Docker, entra al contenedor de PHP con el comando correspondiente.
-
Crea una nueva migración utilizando el comando de Artisan para generar la estructura base. Llama a la migración
create_employees_table. -
Abre el archivo de migración generado y define los campos indicados en la siguiente tabla:
| Campo | Tipo de dato | Restricciones / Descripción |
|---|---|---|
emp_id |
integer |
Clave primaria. No autoincremental. |
emp_firstname |
string(100) |
Nombre del empleado. No nulo. |
emp_lastname |
string(100) |
Apellidos del empleado. No nulo. |
emp_birth_date |
date |
Fecha de nacimiento. No nulo. |
emp_hire_date |
date |
Fecha de contratación. No nulo. |
created_at, updated_at |
timestamp |
Generados automáticamente con timestamps(). |
-
Guarda los cambios y ejecuta la migración para crear la tabla en la base de datos. Si todo es correcto, Laravel mostrará un mensaje confirmando la creación.
-
Comprueba en tu herramienta de gestión de base de datos (DBeaver, Adminer o similar) que la tabla
employeesse ha creado correctamente.
2. Crear una segunda migración para añadir un nuevo campo
En este paso crearás una nueva migración destinada a modificar la tabla existente y añadir un campo adicional llamado salary.
Pasos
-
Genera una nueva migración utilizando el comando de Artisan que permite alterar una tabla existente. LLama a la migración
add_salary_to_employees_table. -
Edita el archivo de migración para añadir el campo
salarydespués de la fecha de contratación. Este campo representará el salario del empleado.
| Campo | Tipo de dato | Restricciones / Descripción |
|---|---|---|
salary |
float |
Campo numérico que puede contener decimales. No nulo. |
-
Ejecuta la migración para aplicar el cambio. Verifica que el nuevo campo aparece correctamente en la tabla
employees. -
Comprueba en tu base de datos que el campo
salaryha sido añadido en la posición adecuada.
3. Crear el modelo Employee
Una vez definida la estructura de la tabla, deberás crear un modelo Eloquent que represente la entidad Employee.
El modelo permitirá interactuar con la base de datos utilizando las herramientas de Eloquent en lugar de escribir consultas SQL manuales.
Pasos
-
Utiliza el comando de Artisan para generar un modelo llamado
Employee. -
Abre el archivo del modelo, ubicado en
app/Models/Employee.php. -
Configura las siguientes propiedades en el modelo:
| Propiedad | Descripción |
|---|---|
$table |
Especifica el nombre de la tabla (employees). |
$primaryKey |
Indica el campo usado como clave primaria (emp_id). |
$incrementing |
Establece si la clave es autoincremental (false en este caso). |
$keyType |
Define el tipo de la clave primaria (int). |
$fillable |
Lista los campos que podrán asignarse de forma masiva (emp_id, emp_firstname, emp_lastname, emp_birth_date, emp_hire_date, salary). |
- Guarda los cambios y asegúrate de que el modelo está correctamente configurado según la tabla creada.
4. Verificar el funcionamiento del modelo
Para comprobar que el modelo funciona correctamente, vas a crear una ruta temporal que permita insertar un nuevo registro en la tabla employees.
Pasos
- Abre el archivo
routes/web.phpdel proyecto. - Crea una nueva ruta
crear-empleadoque apunte a una función anónima. Dentro de esta función, utiliza el modeloEmployeepara crear un registro de prueba en la tabla. - Introduce datos ficticios para un empleado (por ejemplo, nombre, apellidos, fecha de nacimiento, fecha de contratación y salario).
- Guarda los cambios y accede a la URL que hayas definido para la ruta desde el navegador.
- Comprueba en la base de datos que se ha insertado correctamente un nuevo registro.
5. Comprobaciones finales
Para completar la práctica, realiza las siguientes verificaciones:
- Confirma que existen dos migraciones en tu carpeta
database/migrationsy que ambas se han ejecutado correctamente. Puedes usar el comando que muestra el estado de las migraciones. - Comprueba en la base de datos que la tabla
employeescontiene todos los campos definidos. - Verifica que el modelo
Employeeestá correctamente asociado con la tabla y que permite insertar datos sin errores. - Si lo deseas, añade capturas de pantalla de los resultados para documentar tu práctica.
Entrega
Sube a la plataforma de Moodle los siguientes elementos:
- Capturas de pantalla mostrando las migraciones creadas y ejecutadas.
- Evidencia de que el campo
salaryse añadió correctamente. - Código del modelo
Employeecon sus propiedades configuradas. - Captura de la base de datos mostrando el registro de prueba insertado.
Rúbrica de evaluación
| Criterio | Descripción | Peso |
|---|---|---|
| Migración inicial creada | La migración create_employees_table se ha generado correctamente y contiene los campos indicados. |
25 % |
| Migración de modificación | Se ha creado y ejecutado correctamente la migración que añade el campo salary. |
25 % |
Modelo Employee configurado |
El modelo está correctamente vinculado a la tabla employees y usa emp_id como clave primaria. |
25 % |
| Comprensión del modelo | El alumno demuestra entender el uso de propiedades como $fillable, $primaryKey o $incrementing. |
15 % |
| Prueba funcional | Se demuestra que la inserción de un registro en la tabla se realiza correctamente. | 10 % |
Total: 100 %