Migraciones en Laravel 9, ¿Qué son? ¿Para qué sirven? y ejemplos
¡Hola!
Laravel es un Framework php basado en la arquitectura MVC (Modelo - Vista - Controlador). Las vistas en Laravel contienen el código HTML que necesita tu aplicación.). Las migraciones en Laravel son como un “control de versiones” del estado de las tablas de nuestra base de datos. Estas migraciones nos permiten crear tablas, editar tablas y eliminar tablas de la base de datos nuestra aplicación Laravel. . Las migraciones en Laravel están preparadas para ejecutarse en ida y vuelta con lo que podemos ir hacia el estado final de nuestra base de datos o hacia atrás para recuperar el estado de nuestra base de datos en un momento concreto.
Por ejemplo si creamos una migración que creará una tabla llamada “productos” al ejecutar la migración se nos crea la tabla y gracias a las migraciones de Laravel mediante un simple comando (lo veremos más adelante) podemos eliminar esta tabla y volver al estado anterior de la base de datos.
Estas migraciones se almacenan en database/migrations/ de nuestro proyecto Laravel, por defecto al crear una aplicación con Laravel 9 se nos generan estas migraciones
Índice
-
1. Todos los
comandos de las migraciones en Laravel 9
- a. Ejecutar todas las migraciones en Laravel 9
- b. Crear repositorio para las migraciones en Laravel
- c. Volver al schema inicial de nuestra base de datos en Laravel 9
- d. Volver al inicio y volver a ejecutar todas las migraciones en Laravel
- e. Volver a la última migración realizada
- f. Informar sobre las migraciones del sistema
- 2. Crear migraciones que crean tablas en Laravel 9
- 3. Crear migraciones que editan tablas en Laravel 9
- 4. Todos los tipos de columnas disponibles en Laravel 9
Todos los comandos de las migraciones en Laravel 9
Como sabemos Laravel utiliza Artisan, este asistente de comandos nos permite trabajar con migraciones muy fácilmente. Mediante el comando php artisan podemos ver la lista con todos los comandos disponibles.
php artisan make
Si nos dirigimos a la sección migrate podremos ver todas las instrucciones referentes a las migraciones :
Ejecutar todas las migraciones en Laravel 9
Este comando nos permite ejecutar todo el sistema de migraciones y poner en marcha cada una de las migraciones que hemos creado. Crea el repositorio de migraciones (una tabla que contiene todas las migraciones) y luego va ejecutando una a una cada una de las migraciones para generar toda la base de datos que utilizaremos en nuestro proyecto en Laravel 9
php artisan migrate
Crear repositorio para las migraciones en Laravel
Crea el repositorio de migraciones. Este repositorio no es más que una tabla en nuestra base de datos que lleva el control de las migraciones realizadas y su orden de ejecución
php artisan migrate:install
Volver al schema inicial de nuestra base de datos en Laravel 9
Realiza una marcha atrás de todas las migraciones creadas haciendo que volvamos al schema inicial de nuestra base de datos
php artisan migrate:resset
Volver al inicio y volver a ejecutar todas las migraciones en Laravel
Vuelve atrás el sistema de migraciones y vuelve a ejecutar todas las migraciones creadas
php artisan migrate:refresh
Volver a la última migración realizada
Vuelve a la última migración realizada. Una migración puede incluir la creación y edición de más de una tabla con lo que hay que tener cuidado
php artisan migrate:rollback
Informar sobre las migraciones del sistema
Nos informa de las migraciones presentes en nuestra aplicación y nos muestra si están ejecutadas o no.
php artisan migrate:status
Crear migraciones que crean tablas en Laravel 9
Una vez visto todo sobre las migraciones, vamos a crear nuestra primera migración para crear una nueva tabla en nuestra base de datos. Como vimos, podemos crear el archivo con el esqueleto de la migración mediante artisan.
Crear Migración para crear tablas en Laravel
Ejemplo
php artisan make:migration create_nombretabla_table
En nuestro caso quedaría de la siguiente forma:
php artisan make:migration create_productos_table
*Podemos ver que deberemos sustituir “nombretabla” por el nombre de nuestra tabla en plural
Editar Migración para crear tablas en Laravel
Una vez hemos creado la migración nos dirigimos al directorio donde se encuentran todas las migraciones (database/migrations) y podremos ver nuestra migración recién creada
Accedemos al archivo y explicaremos lo que ocurre:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('productos', function (Blueprint $table) {
$table->id();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('productos');
}
};
La función up(): ejecuta toda la migración, en este caso: crea la tabla ‘productos’ con los campos id y created_at y updated_at
La función down(): se ejecuta cuando volvemos hacia atrás y se encarga de desechar los cambios producidos en la migración, es decir, cuando ejecutamos un rollback
Ejecutar Migración en Laravel 9
Una vez hemos terminado de preparar la migración debemos ejecutarla mediante artisan para crear la nueva tabla “productos”
php artisan migrate
Si nos dirigimos a nuestra base de datos podemos comprobar que la tabla se ha creado correctamente
Crear migraciones que editan tablas en Laravel 9
Mientras trabajamos con Laravel es habitual que editemos las tablas de nuestra base de datos ya creadas. Estas migraciones nos permiten agregar nuevas columnas, editar columnas, eliminar columnas y renombrar columnas entre otras
Crear Migración para editar tablas en Laravel
Ejemplo
php artisan make:migration add_nuevocampo_to_nombretabla
En nuestro caso quedaría de la siguiente forma:
php artisan make:migration add_nombre_to_productos
*Podemos ver que deberemos sustituir “nuevocampo” por el nuevo campo a añadir(o uno de ellos en caso de que sean más) y “nombretabla” por el nombre de nuestra tabla en plural
Editar Migración para editar tablas en Laravel
Como vimos anteriormente accedemos a esta nueva migración en el directorio de las migraciones de Laravel que se encuentra en database/migrations y lo editamos para que nos agregue el nuevo campo en la base de datos
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('productos', function (Blueprint $table) {
// Creamos el nuevo campo nombre en nuestra tabla productos
$table->string('nombre');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('productos', function (Blueprint $table) {
/**
* Si volvemos a una instancia anterior de nuestra base de datos
* eliminamos el campo nombre que hemos creado
*/
$table->dropColumn('nombre');
});
}
};
Ejecutar Migración
Una vez hemos terminado de preparar la migración debemos ejecutarla mediante artisan para editar nuestra tabla “productos”
php artisan migrate
Si accedemos a la tabla en nuestra base de datos podemos comprobar que aparece este nuevo campo
Todos los tipos de columnas disponibles en Laravel 9
A pesar de que la mayoría de veces utilizaremos tipos string, integer, smallint etc está bien tener a mano todos los tipos disponibles para que nuestra aplicación Laravel sea lo más optima posible así como su base de datos. Puedes verlos en la documentación oficial de Laravel a través del siguiente enlace: Documentación Laravel