En los frameworks PHP modernos como Symfony y Laravel, las migraciones suelen tener métodos up
y down
. En el método up
de definición de migración, tenía que escribir código que se invoca solo al ejecutar la migración hacia adelante y hacia down
, el código que se invoca solo al revertir la migración. Es una práctica estándar hacer que las migraciones de bases de datos sean irreversibles. Las migraciones deben ser compatibles con versiones anteriores y solo avanzar.
En Laravel, un método faltante o down
no impide la reversión de la migración al ejecutar el comando CLI php artisan migrate:rollback
. El estado de la base de datos no cambiará, pero la migración se eliminará del registro de migraciones aplicadas, y la próxima ejecución de php artisan migrate
llamará nuevamente al método up
. Para evitar este comportamiento, todas las migraciones deben tener un método down
que arroje una excepción, nada más.
php db migration validator verifica si todos los archivos de migración cumplen con este requisito. Puede agregarlo a los ganchos git del servidor para evitar la reversión de la migración o agregar un paso de validación a CI.
Introduzca el paquete a través de Composer.
php composer require antonkomarev/php-db-migration-validator
Validar archivo
php vendor/bin/php-db-migration-validator --rule=irreversible migrations/file.php
Validar muchos archivos
php vendor/bin/php-db-migration-validator --rule=irreversible migrations/file.php migrations/file2.php
Validar muchos archivos mediante comodín
php vendor/bin/php-db-migration-validator --rule=irreversible migrations/2022_ *
Validar archivos en el directorio
php vendor/bin/php-db-migration-validator --rule=irreversible migrations/
Validar archivos en muchos directorios.
php vendor/bin/php-db-migration-validator --rule=irreversible app/migrations/ vendor/migrations/
Automatizar la validación de todas las contribuciones al repositorio como parte de la Integración Continua es una de las formas posibles de utilizar esta herramienta.
Cree el archivo .github/workflows/db-migration-validation.yaml
en el repositorio de la aplicación.
name : DB Migration Validation
on :
push :
jobs :
db-migration-validation :
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v2
- uses : shivammathur/setup-php@v2
with :
php-version : 8.1
extensions : tokenizer
coverage : none
- name : Install php db migration validator dependency
run : composer global require antonkomarev/php-db-migration-validator --no-interaction
- name : Ensure all database migrations are irreversible
run : php-db-migration-validator --rule=irreversible ./database/migrations
$ php vendor/bin/php-db-migration-validator --help
php db migration validator
--------------------------
by Anton Komarev <[email protected]>
Usage: php-db-migration-validator --rule=<rule> <path>
The following commands are available:
help Shows this usage instructions.
Options:
--rules=<rule> Validates the database migration(s) in the specified <path>.
Exits with code 1 on validation errors, 2 on other errors and 0 on success.
Available rules (at least one should be specified):
- irreversible — ensure if migration file has `down` method and this method throws an Exception.
php db migration validator
es un software de código abierto con licencia MIT de Anton Komarev. Si desea apoyar el desarrollo del php db migration validator , considere patrocinarme. ¡Muchas gracias!
CyberCog es una unidad social de entusiastas. Investigar las mejores soluciones en desarrollo de productos y software es nuestra pasión.