ในเฟรมเวิร์ก PHP สมัยใหม่ เช่น Symfony และ Laravel การย้ายข้อมูลมักจะมีวิธีการ 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
เป็นซอฟต์แวร์โอเพ่นซอร์สที่ได้รับอนุญาตภายใต้ใบอนุญาต MIT โดย Anton Komarev หากคุณต้องการสนับสนุนการพัฒนา php db migration validator โปรดพิจารณาสนับสนุนฉัน ขอบคุณมาก!
CyberCog คือความสามัคคีทางสังคมของผู้ที่ชื่นชอบ การค้นคว้าโซลูชันที่ดีที่สุดในการพัฒนาผลิตภัณฑ์และซอฟต์แวร์คือความมุ่งมั่นของเรา