Symfony や Laravel などの最新の PHP フレームワークでは、通常、移行にはup
メソッドとdown
メソッドがあります。移行定義のup
メソッドでは、移行を前方に実行する場合にのみ呼び出されるコードを作成する必要があり、 down
メソッドでは、移行をロールバックする場合にのみ呼び出されるコードを作成する必要がありました。データベースの移行を元に戻せないようにするのが標準的な方法です。移行には下位互換性があり、前進のみが可能である必要があります。
Laravel では、 down
メソッドが欠落していたり空であってもphp artisan migrate:rollback
CLI コマンドの実行時にロールバック移行が妨げられることはありません。データベースの状態は変更されませんが、移行は適用された移行のレジストリから削除され、次にphp artisan migrate
を実行すると、再びup
メソッドが呼び出されます。この動作を防ぐには、すべての移行に例外をスローするdown
メソッドが必要です。それ以外は何もありません。
php db migration validatorすべての移行ファイルがこの要件を満たしているかどうかをチェックします。これをサーバーの git フックに追加して移行のロールバックを防止したり、検証ステップを 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/
継続的インテグレーションの一環としてリポジトリへのすべてのコントリビューションの検証を自動化することは、このツールを使用する可能な方法の 1 つです。
アプリケーション リポジトリにファイル.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
パッケージは、MIT ライセンスに基づいて Anton Kumarev によってライセンス供与されたオープンソース ソフトウェアです。 php db migration validatorの開発をサポートしたい場合は、私をスポンサーすることを検討してください。本当にありがとう!
CyberCog は、愛好家のソーシャル ユニティです。製品およびソフトウェア開発における最良のソリューションを研究することが私たちの情熱です。