Dans les frameworks PHP modernes tels que Symfony et Laravel, les migrations ont généralement des méthodes up
et down
. Dans la méthode up
de définition de la migration, vous deviez écrire du code qui est appelé uniquement lors de l'exécution de la migration vers l'avant et vers down
- le code qui est appelé uniquement lors de l'annulation de la migration arrière. Il est courant de rendre les migrations de bases de données irréversibles. Les migrations doivent être rétrocompatibles et avancer uniquement.
Dans Laravel, une méthode manquante ou down
n'empêche pas la migration par restauration lors de l'exécution de la commande CLI php artisan migrate:rollback
. L'état de la base de données ne changera pas, mais la migration sera supprimée du registre des migrations appliquées, et la prochaine exécution de php artisan migrate
appellera à nouveau la méthode up
. Pour éviter ce comportement, toutes les migrations doivent avoir une méthode down
qui lèvera une exception, rien de plus.
php db migration validator vérifie si tous les fichiers de migration répondent à cette exigence. Vous pouvez l'ajouter aux hooks git du serveur pour empêcher l'annulation de la migration, ou ajouter une étape de validation à CI.
Extrayez le package via Composer.
php composer require antonkomarev/php-db-migration-validator
Valider le fichier
php vendor/bin/php-db-migration-validator --rule=irreversible migrations/file.php
Valider de nombreux fichiers
php vendor/bin/php-db-migration-validator --rule=irreversible migrations/file.php migrations/file2.php
Valider de nombreux fichiers par caractère générique
php vendor/bin/php-db-migration-validator --rule=irreversible migrations/2022_ *
Valider les fichiers dans le répertoire
php vendor/bin/php-db-migration-validator --rule=irreversible migrations/
Valider les fichiers dans de nombreux répertoires
php vendor/bin/php-db-migration-validator --rule=irreversible app/migrations/ vendor/migrations/
L'automatisation de la validation de toutes les contributions au référentiel dans le cadre de l'Intégration Continue est une des possibilités d'utilisation de cet outil.
Créez le fichier .github/workflows/db-migration-validation.yaml
dans le référentiel d'application.
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
est un logiciel open source sous licence MIT par Anton Komarev. Si vous souhaitez soutenir le développement du php db migration validator , pensez à me parrainer. Merci beaucoup!
CyberCog est une Unité Sociale de passionnés. Rechercher les meilleures solutions en matière de développement de produits et de logiciels est notre passion.