Es posible que en algún momento te encuentres con el término "Migración" para definir algo referente a las tablas de las bases de datos y podrías confundirlo con un Modelo que también hace referencia a una tabla en la base de datos, pero sus definiciones y especialmente su propósito es totalmente diferente.

Las Migraciones registran la evolución de nuestra base de datos 📌

Laravel nos ofrece una forma de versionar nuestra base de datos. ¡Así como lees! Es posible que podamos tener un histórico de cambios que se han realizado en las tablas de la base de datos y para eso utilizamos las migraciones.

Las migraciones son archivos que contienen la estructura de una tabla. Con ellas podemos crear una nueva tabla o modificar los campos que la componen, ejecutarla a través de la consola y el cambio se reflejará inmediatamente en la base de datos.

Cabe aclarar que las migraciones sólo alteran la estructura de las tablas, no agregan ni modifican datos directamente, para esto tenemos los "seeders" y este ya es otro término totalmente aparte.

Los Modelos son referencias en código a las tablas en la base de datos 📌

Si bien los modelos son archivos que hacen referencia a una tabla de la base de datos, también se encargan de ofrecernos una forma de "conexión" inmediata con una tabla que necesitamos. Es como si tuviéramos una base de datos "virtual" directamente en nuestra aplicación, podemos accederla más fácilmente para realizar acciones sobre ella (como agregar, actualizar, leer y eliminar datos) sin alterar su estructura de manera física o permanente, pues es posible predefinir valores y atributos, pero siempre a nivel de datos, no de forma.

Cuándo usar un Modelo vs. cuándo usar una Migración 🤷🏻‍♀️

Si deseas realizar cambios en tus tablas, como agregar un campo o modificar el tipo de dato de un campo, puedes usar una migración para cambiar la estructura de la tabla y versionar este archivo para guardar todos los cambios que le has hecho a una misma tabla, pero si lo que necesitas es realizar acciones sobre una tabla, debes usar un modelo.

En la siguiente imagen podrás ver la diferencia gráfica de cómo funcionan los modelos y cómo funcionan las migraciones. El modelo es la representación de una tabla del mapa virtual de la base de datos y las migraciones son documentos que guardan la evolución de una tabla por cada cambio que tiene.

Modelos y migraciones en Eloquent

Ya conoces la diferencia entre un Modelo y una Migración, en la próxima clase aprenderás cuáles son las convenciones y atributos que puedes insertar en los modelos para modificar su estructura a nivel de datos. ¡Vamos! 🏃🏻‍♀️

Diferencias entre Modelo y Migración