Ver el SQL mediante php artisan migrate --pretend en Laravel

Al momento de querer ejecutar las migraciones, tenemos una opción muy útil: el comando --pretend. Este comando nos permite obtener el SQL que Laravel ejecutaría internamente en la base de datos. Es decir, no aplica directamente los cambios, sino que te muestra las sentencias SQL que se van a ejecutar.

En mi caso, por ejemplo, como puedes ver en pantalla, aparecen muchas migraciones. Esto se debe a que tengo una mala sincronización entre las migraciones y la base de datos, pero bueno… esa es otra historia.

$ php artisan migrate --pretend

Como puedes ver, Laravel nos escupe por consola todo el SQL. El único detalle es que:

  1. Algunas líneas tienen caracteres extraños (íconos raros).
  2. No añade los puntos y comas al final de cada sentencia.

Entonces, hay que darle un pequeño formato para que quede más legible. Si quieres, le puedes pedir a ChatGPT que te lo formatee por ti. Pero más allá de eso, lo más importante es que ya tienes el SQL listo para ejecutar en tu base de datos.

¿Para qué sirve esto?

Te estarás preguntando: ¿para qué puede ser útil?

Como he comentado en otros videos, esto es especialmente valioso cuando estás trabajando en ambientes compartidos, como servidores de staging o producción.

En estos entornos:

  1. No siempre tienes acceso a la terminal.
  2. Por lo tanto, no puedes ejecutar php artisan migrate directamente.
  3. Pero sí puedes acceder al manejador de base de datos (por ejemplo, phpMyAdmin o DBeaver).

Entonces, si necesitas crear nuevas tablas o aplicar cambios, puedes copiar este SQL y ejecutarlo directamente.

Antes de conocer esta opción, lo que yo hacía era:

  1. Ir al manejador de estado de base de datos.
  2. Exportar la tabla recién creada.
  3. Tomar el SQL resultante.
  4. Luego ejecutarlo en producción.

Un proceso más engorroso, sobre todo si tenías que modificar tablas existentes.

Con --pretend, todo más fácil

Ahora, con esta opción de --pretend, todo se simplifica:

  1. Puedes ver directamente el SQL, incluso si la migración modifica columnas existentes o añade restricciones.
  2. Ya no dependes de exportar desde el manejador visual.
  3. Y puedes copiar/pegar fácilmente el SQL para ejecutarlo en otros entornos.

Acepto recibir anuncios de interes sobre este Blog.

Veremos un comodín para ver el SQL de las migraciones en Laravel.

- Andrés Cruz

In english