Dev to webs {Coding…}

เรียนรู้การพัฒนาซอฟเวอร์ เพื่อความรู้ที่ยั่งยืน

บทที่ 22: การสร้าง Migration และการจัดการ Schema

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