specific seeds delete column php migration laravel laravel-4

php - seeds - laravel 4 artesano: ¿cómo revertir a un estado de migración específico?



nullable laravel (9)

Laravel 5.3

Con Laravel 5.3 no hay necesidad de secuencias de comandos pesadas. Como permite deshacer el número dado de migraciones.

php artisan migrate:rollback --step=1

Aquí está la page del manual para referencia.

Digamos que tengo archivos de clases de migración a.php , b.php , c.php y d.php . ¿Cómo revertir a un estado de migración específico, el estado definido en b.php por ejemplo, con comando artesanal?


Dado que Laravel solo proporciona php artisan migrate: rollback para deshacer su script de migración, la mejor manera de deshacer su script de migración seleccionado es crear un nuevo script de migración y colocar el script en su método down (en el script de migración seleccionado) para el nuevo creado secuencia de comandos de migración. Espero que esto ayude.


De hecho, no hay esta característica (todavía). asombrosamente

La mejor idea es crear un nuevo archivo backtob.php y realizar una llamada ascendente a tus otros archivos de migración. Para evitar copiar y pegar, puede hacer algo como esto:

class BacktoB { public function up () { // the database is in the after D state // $migrateD = new D(); $migrateD->down(); // the database is in the after C state // $migrateC = new C(); $migrateC->down(); // the database is in the before C state // // before C = B // } public function down () { // the database is in the B state // $migrateC = new C(); $migrateC->up(); // the database is in the after C state // $migrateD = new D(); $migrateD->up(); // the database is in the after D state // } }

Como puede ver, puede crear las llamadas hacia arriba y hacia abajo de las migraciones que desea revertir.

No es el ideal, pero es lo que podemos hacer.


En mi experiencia. Nunca migro: retroceso. Por lo general, creo otra migración que hace todos los cambios que necesito para "deshacer / deshacer" las migraciones anteriores.

De esta forma, puede ser flexible si desea retrotraer 2-x pasos hacia atrás, solo puede crear una nueva migración para efectuar los cambios que desee y luego ejecutar la nueva migración mediante php artesanal migrate.


Hay una forma de piratearlo editando manualmente la base de datos. En la tabla de migrations , cambie la columna del batch dando a la última migración un número de lote diferente. Tenga en cuenta que están en orden creciente, por lo que edite en consecuencia. Esto rastrea qué migraciones se aplicaron por separado.

Luego ejecute artisan:rollback y deshará el último "lote".

Entonces, si quieres separarlos todos, comienza desde la parte superior y dale a cada uno 1,2,3,4,5 y así sucesivamente ... Puedes ver que es fácilmente secuenciable, y puedes hacer un comando artesanal si desea separar todas tus migraciones


Hay una manera fácil pero sucia:

Si tiene migraciones a.php , b.php y c.php y desea deshacer c y b , simplemente puede modificar a.php de tal forma que haya un error de sintaxis ... soltar un punto y coma o alguna cosa.

Por lo tanto, cuando ejecute php artisan migrate:rollback reversará tanto c como b y se detendrá con un error en a . A partir de ese momento, la reversión de c y b se considerará la última operación de migración.

No olvide corregir cualquier error que haya cometido a propósito en a.php .


Me temo que no puedes hacer esto directamente.

Puede: 1, deshacer la última operación de migración (todas las migraciones se ejecutaron en el último lote)

php artisan migrate:rollback

2, revertir todas las migraciones

php artisan migrate:reset

3, revertir todas las migraciones y ejecutarlas todas de nuevo

php artisan migrate:refresh php artisan migrate:refresh --seed

En su caso, modifique b.php y su método up() , luego ejecute artisan migrate:refresh command.


Si realmente lo deseaba, podría escribir una función personalizada que consulte la tabla de migraciones, busque el archivo que busca, y resuelva cuántas veces revertir, luego realiza un ciclo de ''migrar: deshacer'' hasta que llegue al migración requerida ...


Utilice el comando php artesanal migrate: rollback.

php artisan migrate:rollback

Para ver qué rollback hará, use la opción --pretend.

php artisan migrate:rollback --pretend

También puede especificar una conexión de base de datos que no sea la predeterminada.

php artisan migrate:rollback --pretend --database=other-one