php db migration validator
1.0.2
在 Symfony 和 Laravel 等现代 PHP 框架中,迁移通常有up
和down
方法。在迁移定义的up
方法中,您必须编写仅在向前运行迁移时调用的代码,而在down
中,您必须编写仅在回滚迁移时调用的代码。使数据库迁移不可逆转是标准做法。迁移应该向后兼容并且只能向前进行。
在 Laravel 中,缺失或空的down
方法不会阻止执行php artisan migrate:rollback
CLI 命令时的回滚迁移。数据库的状态不会改变,但是迁移会从应用的迁移注册表中删除,下次执行php artisan migrate
会再次调用up
方法。为了防止这种行为,所有迁移都应该有down
方法,该方法会抛出异常,仅此而已。
php db migration validator检查所有迁移文件是否满足此要求。您可以将其添加到服务器的 git hooks 以防止迁移回滚,或者将验证步骤添加到 CI。
通过 Composer 拉入包。
php composer require antonkomarev/php-db-migration-validator
验证文件
php vendor/bin/php-db-migration-validator --rule=irreversible migrations/file.php
验证许多文件
php vendor/bin/php-db-migration-validator --rule=irreversible migrations/file.php migrations/file2.php
通过通配符验证多个文件
php vendor/bin/php-db-migration-validator --rule=irreversible migrations/2022_ *
验证目录中的文件
php vendor/bin/php-db-migration-validator --rule=irreversible migrations/
验证多个目录中的文件
php vendor/bin/php-db-migration-validator --rule=irreversible app/migrations/ vendor/migrations/
作为持续集成的一部分,自动验证对存储库的所有贡献是使用此工具的可能方法之一。
在应用程序存储库中创建文件.github/workflows/db-migration-validation.yaml
。
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
程序包是由 Anton Komarev 根据 MIT 许可证授权的开源软件。 如果您想支持php db migration validator的开发,请考虑赞助我。非常感谢!
CyberCog 是爱好者的社交联盟。研究产品和软件开发的最佳解决方案是我们的热情。