ในการ Develop Laravel นั้นการใช้ Migration ก็สำคัญมากๆ เพราะไม่ว่าจะตอนพัฒนาเว็บอยู่ หรือ ตอนนำขึ้น Production แล้วก็ต้องใช้ migration ด้วยกันทั้งสิ้น แต่เนื่องจาก migration ใน Laravel นั้นมีหลายคำสั่งผมเชื่อว่าหลายๆคนคงเลือกใช้งานผิดกันอยู่บ้างวันนี้เลยจะมาขยายความคำสั่ง fresh และ refresh ใน Laravel กัน
เมื่อเราพิมพ์คำสั่ง fresh ใน migrate ดังนี้
php artisan migrate:fresh
มันคือการสั่งให้ลบ Table ทั้งหมดในฐานข้อมูลเราทิ้งแล้วอ่านไฟล์ migration เพื่อสร้างใหม่ นั้นหมายความว่าข้อมูลในฐานข้อมูลทั้งหมดจะหายไป
แต่ถ้าเรารัน refresh ใน migrate ดังนี้
php artisan migrate:refresh
มันคือการสั่งให้ลบ Table ทั้งหมดทิ้งแล้วอ่านไฟล์ migration เพื่อสร้างใหม่ เช่นเดียวกับคำสั่ง fresh แต่สิ่งที่แตกต่างคือ ระบบจะใช้การ rollback คือลบทีละตารางโดยเริ่มจาก migration ล่าสุดก่อน ยกตัวอย่างเช่นเรามีการสร้างไฟล์ migration ดังนี้
- 2014_10_12_000000_create_users_table.php
- 2014_10_12_100000_create_password_resets_table.php
- 2019_08_19_000000_create_failed_jobs_table.php
- 2020_01_29_221303_create_customers_table.php
- 2020_01_29_222143_create_services_table.php
ระบบจะทำการลบ table ดังนี้โดยเริ่มจาก services -> customers -> failed_jobs -> password_resets -> users เพราะแบบนี้มันจึงมีคำสั่งพิเศษอีกตัวขึ้นมาคือ –step=จำนวนที่ต้องการ rollback เช่น
php artisan migrate:refresh --step=1
จากตัวอย่าง migration ด้านบน ระบบจะทำการลบแค่ Table services เท่านั้นซึ่งก็คือไฟล์นี้
- 2020_01_29_222143_create_services_table.php
หลังจากนั้นก็อ่านไฟล์แล้วสร้างฐานข้อมูลให้เราใหม่ เป็นอันจบเรียบร้อย
สรุป
- คำสั่ง fresh ใช้สำหรับกรณีที่ต้องการลบข้อมูลทั้งหมดและสร้างตารางใหม่
- คำสั่ง refresh ใช้สำหรับกรณีที่ต้องการลบข้อมูลบางตารางแล้วสร้างใหม่