Dalam framework PHP modern seperti Symfony dan Laravel, migrasi biasanya memiliki metode up
dan down
. Dalam metode definisi migrasi up
Anda harus menulis kode yang dipanggil hanya saat menjalankan migrasi maju dan ke down
— kode yang dipanggil hanya saat mengembalikan migrasi. Merupakan praktik standar untuk membuat migrasi database tidak dapat diubah. Migrasi harus kompatibel dengan masa lalu dan hanya bergerak maju.
Di Laravel, metode yang hilang atau down
tidak mencegah migrasi rollback pada eksekusi perintah php artisan migrate:rollback
CLI. Status database tidak akan berubah, tetapi migrasi akan dihapus dari registri migrasi yang diterapkan, dan eksekusi php artisan migrate
berikutnya akan memanggil metode up
lagi. Untuk mencegah perilaku ini, semua migrasi harus memiliki metode down
yang akan memunculkan Pengecualian, tidak lebih.
php db migration validator memeriksa apakah semua file migrasi memenuhi persyaratan ini. Anda dapat menambahkannya ke git hooks server untuk mencegah rollback migrasi, atau menambahkan langkah validasi ke CI.
Tarik paket melalui Komposer.
php composer require antonkomarev/php-db-migration-validator
Validasi file
php vendor/bin/php-db-migration-validator --rule=irreversible migrations/file.php
Validasi banyak file
php vendor/bin/php-db-migration-validator --rule=irreversible migrations/file.php migrations/file2.php
Validasi banyak file dengan wildcard
php vendor/bin/php-db-migration-validator --rule=irreversible migrations/2022_ *
Validasi file dalam direktori
php vendor/bin/php-db-migration-validator --rule=irreversible migrations/
Validasi file di banyak direktori
php vendor/bin/php-db-migration-validator --rule=irreversible app/migrations/ vendor/migrations/
Mengotomatiskan validasi semua kontribusi ke repositori sebagai bagian dari Integrasi Berkelanjutan adalah salah satu cara yang mungkin untuk menggunakan alat ini.
Buat file .github/workflows/db-migration-validation.yaml
di repositori aplikasi.
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
adalah perangkat lunak sumber terbuka yang dilisensikan di bawah lisensi MIT oleh Anton Komarev. Jika Anda ingin mendukung pengembangan php db migration validator , mohon pertimbangkan untuk mensponsori saya. Terima kasih banyak!
CyberCog adalah Kesatuan Sosial para peminat. Meneliti solusi terbaik dalam pengembangan produk & perangkat lunak adalah semangat kami.