Las migraciones en Laravel es una forma de estructurar la base de datos de una aplicación de manera programática, permitiendo a los desarrolladores definir los cambios en la estructura de la base de datos mediante código.
¡Hola! ¡Bienvenidos al curso de Laravel nivel intermedio!
¡Empecemos!
¿Qué son las migraciones en Laravel?
Las migraciones son una característica que permite gestionar y mantener la estructura de la base de datos de una aplicación de manera programática y versionada. Con las migraciones podemos definir la estructura de las tablas de la base de datos y para realizar cambios en ella a medida que la aplicación evoluciona.
Las migraciones contienen métodos para crear, modificar o eliminar columnas de una tabla o la tabla en sí. Cada migración tiene una marca de tiempo única que se utiliza para ordenar las migraciones en secuencia, lo que permite ejecutarlas en el orden correcto para mantener la integridad de la base de datos.
Estructura básica de una migración en Laravel
La estructura básica de una migración en Laravel es la siguiente:
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class NombreDeLaMigracion extends Migration { public function up() { // Código para crear, modificar o eliminar tablas y columnas } public function down() { // Código para revertir las operaciones de la migración } }
Al crear la migración de las tablas, por defecto, se crean dos métodos. El Método “Up” ejecuta las migraciones y cambios realizados, el Método “Down” revierte la migración realizada por el Método “Up”.
Modelo entidad-relación
Antes de realizar las migraciones de la base de datos, hay que tener presente que en este punto ya debemos tener creado y definido el modelo entidad-relación. Por ejemplo, de curso-online tenemos lo siguiente:

Crear migraciones en Laravel
Para crear las migraciones en Laravel utilizaremos Artisan (la interfaz de línea de comandos de Laravel). Al momento de crear las migraciones, las tablas deben de estar en plural, por ejemplo Alumnos, Profesores y Cursos.
Crear la tabla alumnos
Desde la Terminal en Linux o Mac, en Windows con Git Bash, PowerShell o CMD, en el directorio raíz de nuestro proyecto de Laravel crearemos la tabla alumnos con el siguiente comando:
php artisan make:migration create_alumnos_table
Este comando creará una nueva migración para la tabla “Alumnos” en el directorio “database/migrations” en el cual definiremos los campos de la tabla. En el método “Up” es donde iremos llenando los campos de la tabla “Alumnos”.
$table->string('nombre_apellido', 75); $table->integer('edad'); $table->string('telefono', 35)->nullable(); $table->string('direccion', 75)->nullable();
Al crear los campos de una tabla, existen tipos de columnas que podemos aplicar a cada campo que vayamos creando (string, Integer, decimal, etc.) según las características y tipos de datos que se almacenan en la base de datos (puedes visitar el sitio oficial de Laravel para ver todos los tipos de datos que podemos aplicar).
Cada campo que vayamos creando por defecto son obligatorios, la palabra reservada “nullable” es para especificar que el campo permite datos nulos (como es el caso de los campos teléfono y dirección).

Crear la tabla profesores
Del mismo modo vamos a crear las migraciones para la tabla “Profesores” con el siguiente comando:
php artisan make:migration create_profesores_table
Crearemos los campos de la tabla “Profesores”, con los campos: nombre y apellido, profesión, grado académico y teléfono, cada campo con su tipo y característica.
$table->string('nombre_apellido', 75); $table->string('profesion', 35); $table->string('grado_academico', 35)->nullable(); $table->string('telefono', 35)->nullable();
Crear la tabla cursos
Por último, crearemos la migración de la tabla “Cursos”.
php artisan make:migration create_cursos_table
Relaciones en las tablas de migraciones
En la tabla Cursos existen dos relaciones que debemos tomar en cuenta considerando nuestro modelo entidad-relación que debemos reflejar en las migraciones (profesor con cursos y alumnos con cursos).
Relación uno a muchos
La relación existente entre la tabla profesores y la tabla cursos, es una relación de uno a muchos (o muchos a uno), es decir, un profesor puede dictar muchos cursos, un curso puede ser dictado por un solo profesor. En la tabla “Cursos” registramos el campo “profesor_id” como llave foránea de la tabla profesores, esto creará una integridad referencial a nivel de la base de datos.
$table->string('materia', 75); $table->string('nivel', 35); $table->string('horas_academicas', 35)->nullable(); $table->unsignedBigInteger('profesor_id'); $table->foreign('profesor_id')->references('id')->on('profesores')->onDelete('cascade');
Relación muchos a muchos
La relación entre la tabla “Alumnos” y “Cursos” es una relación muchos a muchos (Un alumno puede tomar varios cursos, un curso puede tener muchos alumnos). De manera similar, en las migraciones se debe indicar esta relación (muchos a muchos), creando una tabla Pivot (tercera tabla), esto lo realizaremos en el mismo método Up de la migración de “Cursos” (también se puede crear una migración independiente para la tabla pivot con la combinación de ambas tablas ejemplo create_alumno_curso_table).
Schema::create('alumno_curso', function(Blueprint $table){ $table->increments('id'); $table->unsignedBigInteger('curso_id'); $table->foreign('curso_id')->references('id')->on('cursos')->onDelete('cascade'); $table->unsignedBigInteger('alumno_id'); $table->foreign('alumno_id')->references('id')->on('alumnos')->onDelete('cascade'); });
Ejecutar las migraciones en Laravel
Una vez registrados y llenados los campos de las migraciones (tablas de “alumnos”, “profesores” y “cursos”), nuevamente ejecutamos las migraciones desde la consola de Artisan para generar toda la estructura de la base de datos con el siguiente comando:
php artisan migrate:fresh
Hasta aquí todo sobre migraciones en Laravel 11, ya tenemos creado nuestra base de datos, todas las tablas y sus relaciones de integridad, en la siguiente clase empezaremos a crear los Modelos y ver Eloquent ORM de Laravel.
Saludos y éxitos.

Victor Peña
Desarrollador de software Backend Developer, experto en Laravel Framework, PHP, JavaScript y MySQL. Creador de contenidos de emprendimiento y desarrollo de software.
Pingback: Configuración de base de datos en Laravel - Norvic Software
Pingback: Tinker en Laravel - Norvic Software
Pingback: Validación de formularios en Laravel - Norvic Software