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 ยังช่วยให้ทีมพัฒนาทำงานร่วมกันได้ง่าย เนื่องจากสามารถแชร์การเปลี่ยนแปลงโครงสร้างฐานข้อมูลผ่านโค้ดได้อย่างง่ายดาย