Diferencias entre Modelo y Migración

6/17

Lectura

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! 🏃🏻‍♀️

Aportes 15

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Para ponerlo de una forma más fácil:

Modelo: Esta es como si tuvieras una tabla en tu código, representa a la tabla y con el puedes hacer tus consultas de tipo SELECT, INSERT, UPDATE, DELETE, etc.

Migración: Las migraciones están más pensadas para las tablas, crear tablas, alterar tablas, agregar un nuevo campo a la tabla, etc. Laravel mantiene un histórico de los modelos permitiendo tener así diferentes “versiones” de tu base de datos.

Las Migraciones son importantes porque nos ayudan a crear las tablas en “cualquier” motor de bases de datos de forma fácil, es la forma correcta de trabajar cuando se empieza un proyecto y se trabaja con un equipos de desarrollo.
Pero hay veces se llega a un proyecto y ya existen bases de datos, entonces la forma en que lo esta haciendo la profesora es la que debemos realizar, a partir de los Modelos se referencian las tablas que tenemos que usar en el proyecto.

No estoy de acuerdo con estos conceptos, una migración puede estar relacionada directamente con su modelo, de hecho a la hora de crear una migración podemos ya generar su modelo con:

php artisan make:model Project -m

Los migrations en realidad sirven, a parte del versionamiento de la tabla, para abstraernos del motor de la DB, con el mismo migration yo podría generar una DB tanto en MySQL o Postgres por dar un ejemplo.

Necesitaba está aclaración, muchas gracias!

Para mi la diferencia fundamental es que las migracion son control de versiones de los objectos en nuestra base de datos los modelos son abstracciones de los objetos en nuestra aplicacion

la ventaja de las migraciones es que te permiten escalar la base de datos, de tal forma que si en la linea de tiempo del proyecto cierta tabla necesite eliminarse o aumentarse un campo mas lo podras hacer sin problemas, CREANDO UNA MIGRACION EN LARAVEL

Es decir que:

  • Los modelos serian aquellos que te permiten hacer acciones sobre la tabla creada, como por ejemplo, en el caso que fueran datos numericos, se podrian sumar datos.
  • Las migraciones serian para modificar los datos o estructura de mi tabla.

¿Es asi? corrijanme por favor.

Las migraciones pueden cambiar la estructura de una tabla, y hasta tener un historial de los cambios.

Los modelos nos conectan rápido con las tablas y nos permiten modificar los datos de estas.

Habiendo entendido la diferencias entre modelos y migraciones, y entendiendo hay una relación entre factories y seeders, ¿se podría decir que las migrations son a los factories lo que los models son a los seeders? 🤔

¿Se podría decir que el mapeo que se hace a la BD mediante un ORM es semejante, conceptualmente, al paradigma de POO?

Para ponerlo de una forma más fácil:

Modelo: Esta es como si tuvieras una tabla en tu código, representa a la tabla y con el puedes hacer tus consultas de tipo SELECT, INSERT, UPDATE, DELETE, etc.

Migración: Las migraciones están más pensadas para las tablas, crear tablas, alterar tablas, agregar un nuevo campo a la tabla, etc. Laravel mantiene un histórico de los modelos permitiendo tener así diferentes “versiones” de tu base de datos.

**Modelos **
Son representaciones Virtuales de una tabla de base de datos, los cuales puede modificar los registros de una tabla y no su estructura.

Migración
Las migraciones en Laravel son una herramienta que nos permite crear una especie de sistema de control de versiones de bases de datos donde podemos definir tablas con POO en vez de SQL, es compatible con los diferentes motores de base de datos dado que Laravel genera el SQL por nosotros.

Un modelo se utiliza cuando se quiere realizar acciones sobres los datos de una DB, mientas que las migraciones se utilizan cuando se quiere modificar las columnas, tipos de datos, etc de dicha DB.

¡Vamos a ello!

Muchas gracias por la aclaración.