para - modificar tabla laravel migration
Obteniendo SQL crudo realizado por migraciones laravel 4 (2)
Si agrega esto al comienzo de su archivo Routes.php
, Routes.php
todo el SQL que Laravel ejecuta:
Event::listen(''illuminate.query'', function($sql)
{
var_dump($sql);
});
Así que hazlo, luego ejecuta php artisan migrate
, y todo el SQL se descarta.
A continuación, puede simplemente registrar el SQL en un archivo o algo en lugar de hacer un var_dump: las posibilidades son infinitas ...
Estoy trabajando en un entorno en el que, en lugar de implementar cambios directamente en los servidores de los clientes, tengo que generar un paquete de construcción con una lista de cambios de una revisión de SVN y enviarlo a su equipo web.
El problema es que no se me permite nada sofisticado, solo cambios en los recursos del sitio y las consultas sin procesar, esto significa que no puedo pedirle al cliente que ejecute migraciones de laravel cuando los necesite para hacer un cambio en sus bases de datos de transmisión y en vivo ( y no confío lo suficiente en las migraciones como para vivir.) Tampoco tendré acceso directo a la base de datos en vivo.
Entonces, lo que quiero hacer es capturar el SQL sin formato cuando se ejecuta una migración, a partir de ahí puedo ver exactamente qué está cambiando y puedo decirle al cliente "aquí hay un archivo SQL de lo que necesita cambiar, revisarlo y ejecutarlo" cuando aplicas la actualización ".
Como una solución alternativa que no requiere configurar ningún receptor de eventos, puede usar la opción --pretend
cuando ejecuta el comando:
php artisan migrate --pretend
Esto eliminará las consultas SQL que la migración ejecutará, pero sin ejecutar realmente la migración. Generará en cada línea el nombre de clase de la migración y consulta que se ejecuta desde esa migración, por lo que para una migración que crea una tabla de users
con una columna de email
única, obtendrá algo como esto:
CreateUsersTable: create table `users` (`id` int unsigned not null auto_increment primary key, `email` varchar(255) not null, `password` varchar(60) not null, `created_at` timestamp default 0 not null, `updated_at` timestamp default 0 not null) default character set utf8 collate utf8_unicode_ci
CreateUsersTable: alter table `users` add unique users_email_unique(`email`)
Esta opción está presente desde Laravel 4 hasta la versión más reciente de Laravel (que en el momento en que publico esta respuesta es 5.1).