Em frameworks PHP modernos, como Symfony e Laravel, as migrações geralmente possuem métodos up
e down
. No método up
de definição de migração, você teve que escrever um código que é chamado apenas ao executar a migração para frente e para down
- o código que é chamado apenas ao reverter a migração. É prática padrão tornar as migrações de banco de dados irreversíveis. As migrações devem ser compatíveis com versões anteriores e apenas avançar.
No Laravel, um método down
ausente ou vazio não impede a migração de reversão na execução do comando CLI php artisan migrate:rollback
. O estado do banco de dados não mudará, mas a migração será removida do registro de migrações aplicadas, e a próxima execução do php artisan migrate
chamará o método up
novamente. Para evitar esse comportamento, todas as migrações devem ter o método down
que lançará uma exceção, nada mais.
php db migration validator verifica se todos os arquivos de migração atendem a este requisito. Você pode adicioná-lo aos ganchos git do servidor para evitar a reversão da migração ou adicionar uma etapa de validação ao CI.
Puxe o pacote através do Composer.
php composer require antonkomarev/php-db-migration-validator
Validar arquivo
php vendor/bin/php-db-migration-validator --rule=irreversible migrations/file.php
Valide muitos arquivos
php vendor/bin/php-db-migration-validator --rule=irreversible migrations/file.php migrations/file2.php
Valide muitos arquivos por curinga
php vendor/bin/php-db-migration-validator --rule=irreversible migrations/2022_ *
Validar arquivos no diretório
php vendor/bin/php-db-migration-validator --rule=irreversible migrations/
Valide arquivos em vários diretórios
php vendor/bin/php-db-migration-validator --rule=irreversible app/migrations/ vendor/migrations/
Automatizar a validação de todas as contribuições para o repositório como parte da Integração Contínua é uma das formas possíveis de utilização desta ferramenta.
Crie o arquivo .github/workflows/db-migration-validation.yaml
no repositório do aplicativo.
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
é um software de código aberto licenciado sob a licença MIT por Anton Komarev. Se você gostaria de apoiar o desenvolvimento do php db migration validator , considere me patrocinar. Muito obrigado!
CyberCog é uma Unidade Social de entusiastas. Pesquisar as melhores soluções em desenvolvimento de produtos e software é a nossa paixão.