مدیریت پایگاه‌داده و مهاجرت‌ها در لاراول

laravel database migrations
20 آبان 1403

لاراول یکی از محبوب‌ترین فریمورک‌های PHP است که به خاطر سادگی ساختار و قابلیت‌های پیشرفته در توسعه وب معروف است. یکی از امکانات بسیار مفید لاراول، استفاده از سیستم مهاجرت‌ها برای مدیریت پایگاه‌داده‌هاست. این سیستم به توسعه‌دهندگان اجازه می‌دهد تا به راحتی تغییرات ساختاری در دیتابیس خود ایجاد کنند و این تغییرات را به تیم‌های دیگر منتقل کنند.

مهاجرت‌ها در لاراول به عنوان کلاس‌های PHP تعریف می‌شوند که داخل دایرکتوری database/migrations ذخیره می‌گردند. هر مهاجرت شامل دو متد اصلی up و down است. متد up برای اضافه کردن یا تغییر جداول و متد down برای بازگشت به تنظیمات قبلی استفاده می‌شود.

به کار گیری مهاجرت‌ها در لاراول مزایای زیادی دارد مانند: تاریخچه‌سازی تغییرات، قابلیت ترک بک (rollback) تغییرات و مستند سازی فرآیند توسعه. تیم‌های توسعه می‌توانند با استفاده از فرمان artisan migrate تغییرات را در دیتابیس رکورد کنند و با artisan migrate:rollback نسخه‌ها را به عقب برگردانند.

برای مثال، با استفاده از دستور زیر می‌توانید یک مهاجرت جدید برای ایجاد یک جدول به نام "users" بسازید:

php artisan make:migration create_users_table

سپس می‌توانید تغییرات مورد نیاز خود را در فایل مهاجرت ایجاد شده اعمال کنید:

<?php

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->string('password');
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::dropIfExists('users');
    }
}

بعد از نوشتن مهاجرت، برای اعمال آن در دیتابیس، از فرمان زیر استفاده کنید:

php artisan migrate

حال، بیایید بررسی کنیم که این کد چه کار می‌کند:

<?php: شروع فایل PHP
use Illuminate\Database\Migrations\Migration;: وارد کردن کلاس پایه مهاجرت
use Illuminate\Database\Schema\Blueprint;: وارد کردن Blueprint برای ساخت جداول
use Illuminate\Support\Facades\Schema;: وارد کردن رابط Schema برای ارتباط با دیتابیس
class CreateUsersTable extends Migration: شروع تعریف یک کلاس مهاجرت به نام CreateUsersTable
public function up(): متدی که هنگام اجرای مهاجرت برای اعمال تغییرات استفاده می‌شود
Schema::create('users', function (Blueprint $table): تعریف جدول جدید به نام users
$table->id();: افزودن ستون id به عنوان کلید اصلی
$table->string('name');: تعریف ستونی برای نگهداری نام کاربر
$table->string('email')->unique();: تعریف ستون ایمیل که باید یکتا باشد
$table->string('password');: تعریف ستون پسورد
$table->timestamps();: افزودن ستون‌های پیش‌فرض برای تاریخ ایجاد و بروزرسانی
public function down(): متدی که هنگام بازگردانی مهاجرت برای حذف تغییرات استفاده می‌شود
Schema::dropIfExists('users');: حذف جدول users اگر وجود داشته باشد

سوالات متداول

؟

چرا باید از مهاجرت‌ها در لاراول استفاده کنیم؟

؟

چگونه می‌توانم یک مهاجرت جدید بسازم؟

؟

تفاوت بین متدهای up و down چیست؟

؟

آیا می‌توان مهاجرت‌ها را برگرداند؟