Previsualizar migraciones

Las migraciones de Laravel nos permiten llevar un control de versiones de las tablas en nuestra base de datos, es decir, con ellas podemos usar la programación orientada a objetos para definir las tablas sin necesidad de escribir sentencias SQL. Pero ¿Qué sucede si queremos conocer cómo se están creando las tablas o qué cambios se están realizando?. De eso te hablaremos en este tutorial.

Con el comando migrate podemos ver las consultas SQL resultantes de nuestras migraciones antes de ejecutarlas, y de esta manera verificar que van a realizar lo que queremos. Para hacerlo, debemos agregar al comando la bandera --pretend

php artisan migrate --pretend

Por ejemplo, vamos a crear la migración para el modelo Post:

php artisan make:migration create_posts_table

y añadimos algunos atributos a la tabla con el método up() del archivo ubicado en database/migrations/.

public function up()
{
    Schema::create('posts', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('title');
        $table->text('body');
        $table->timestamps();
    });
}

al ejecutar php artisan migrate --pretend obtendremos el siguiente resultado:

CreatePostsTable: create table `posts` (`id` bigint unsigned not null auto_increment
primary key, `title` varchar(255) not null, `body` text not null, `created_at` timestamp 
null, `updated_at` timestamp null) default character set utf8mb4 collate 'utf8mb4_unicode_ci'

Adicionalmente, podemos guardar el resultado en un archivo de la siguiente manera:

php artisan migrate --pretend > migration.sql

migration.sql se guardará en el directorio raíz de tu proyecto.

Esto puede ser bastante útil para ejecutar consultas SQL en un servidor que no nos permite realizar las migraciones, por ejemplo, en servidores compartidos donde no tenemos acceso SSH para ejecutar comandos. De esta manera el resultado obtenido con la bandera --pretend lo estaríamos usando para crear tablas o agregar cambios a la base de datos en el servidor directamente, con un sistema manejador de base de datos como phpMyAdmin.

Por ejemplo, para nuestro caso podemos copiar y pegar la consulta así:

CREATE TABLE en MySQL con phpMyAdmin

O también podemos usar el archivo creado anteriormente para importarlo, no sin antes editarlo para que se pueda ejecutar correctamente, es decir, eliminando el nombre de la clase de la migración y los dos puntos para dejar solo la sentencia SQL.

create table `posts` (`id` bigint unsigned not null auto_increment primary key, 
`title` varchar(255) not null, `body` text not null, `created_at` timestamp null, 
`updated_at` timestamp null) default character set utf8mb4 collate 'utf8mb4_unicode_ci';

En casos donde sea más de una migración se debe colocar un punto y coma al final de cada sentencia.

Espero te haya gustado este sencillo tip sobre las migraciones de Laravel. No olvides compartir en las redes sociales.

Material relacionado

Da tus primeros pasos en Laravel de manera gratuita con nuestro curso Primeros Pasos con Laravel 6

Ver más

Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.