Migration ใน Laravel เป็นเครื่องมือที่ช่วยให้การสร้างและปรับโครงสร้างตารางฐานข้อมูลเป็นไปอย่างสะดวกและง่ายดาย โดยสามารถกำหนด Schema ของตาราง เช่น ชื่อคอลัมน์ ประเภทข้อมูล หรือคีย์ต่างๆ ได้ผ่านโค้ด ทำให้ง่ายต่อการติดตามการเปลี่ยนแปลงของฐานข้อมูลในแต่ละเวอร์ชันของแอปพลิเคชัน
การสร้าง Migration
Laravel มีคำสั่ง Artisan สำหรับสร้าง Migration ที่ช่วยให้เราสามารถกำหนดโครงสร้างตารางฐานข้อมูลได้โดยใช้คำสั่ง make:migration ตามด้วยชื่อของ Migration ที่ต้องการสร้าง
ตัวอย่างการสร้าง Migration:
php artisan make:migration create_users_table
คำสั่งนี้จะสร้างไฟล์ Migration ใหม่ในโฟลเดอร์ database/migrations โดยชื่อไฟล์จะขึ้นต้นด้วยวันที่และเวลาที่สร้าง เช่น 2023_01_01_000000_create_users_table.php
การกำหนด Schema ใน Migration
ภายในไฟล์ Migration จะมีสองฟังก์ชันหลัก คือ up() และ down()
- up() ใช้กำหนดโครงสร้างตาราง เช่น การสร้างตารางหรือเพิ่มคอลัมน์
- down() ใช้ลบหรือย้อนการเปลี่ยนแปลงที่กำหนดใน up()
ตัวอย่างการกำหนด Schema ของตาราง users:
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateUsersTable extends Migration
{
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->timestamps();
        });
    }
    public function down()
    {
        Schema::dropIfExists('users');
    }
}
ในตัวอย่างนี้:
- ใช้ $table->id()เพื่อสร้างคอลัมน์idซึ่งเป็น Primary Key
- ใช้ $table->string('name')เพื่อสร้างคอลัมน์nameที่มีประเภทข้อมูลเป็น string
- ใช้ $table->timestamps()เพื่อสร้างคอลัมน์created_atและupdated_atอัตโนมัติ
การรัน Migration
หลังจากสร้าง Migration แล้ว เราสามารถรัน Migration เพื่อสร้างหรือปรับโครงสร้างฐานข้อมูลได้โดยใช้คำสั่ง:
php artisan migrate
คำสั่งนี้จะทำงานตามที่กำหนดไว้ในฟังก์ชัน up() ในไฟล์ Migration ทั้งหมด หากต้องการยกเลิกการเปลี่ยนแปลงสามารถใช้คำสั่ง migrate:rollback เพื่อย้อนกลับการเปลี่ยนแปลงที่กำหนดไว้ในฟังก์ชัน down()
การปรับปรุงตารางด้วย Migration
หากต้องการเพิ่มคอลัมน์ใหม่หรือลบคอลัมน์ที่มีอยู่ เราสามารถสร้าง Migration ใหม่เพื่อปรับปรุงโครงสร้างตารางได้ ตัวอย่างเช่น การเพิ่มคอลัมน์ age ในตาราง users
สร้าง Migration ใหม่:
php artisan make:migration add_age_to_users_table --table=users
จากนั้นปรับปรุงฟังก์ชัน up() และ down():
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddAgeToUsersTable extends Migration
{
    public function up()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->integer('age')->nullable();
        });
    }
    public function down()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->dropColumn('age');
        });
    }
}
}
การนำไปใช้งาน
การใช้ Migration และ Schema Builder ใน Laravel ช่วยให้การจัดการโครงสร้างฐานข้อมูลสะดวกและมีระบบ ไม่ว่าจะเป็นการสร้างตาราง เพิ่มคอลัมน์ หรือปรับปรุงโครงสร้างเดิม การใช้ Migration ยังช่วยให้ทีมพัฒนาทำงานร่วมกันได้ง่าย เนื่องจากสามารถแชร์การเปลี่ยนแปลงโครงสร้างฐานข้อมูลผ่านโค้ดได้อย่างง่ายดาย