لاراول یکی از محبوبترین فریمورکهای 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
: شروع فایل PHPuse Illuminate\Database\Migrations\Migration;
: وارد کردن کلاس پایه مهاجرتuse Illuminate\Database\Schema\Blueprint;
: وارد کردن Blueprint برای ساخت جداولuse Illuminate\Support\Facades\Schema;
: وارد کردن رابط Schema برای ارتباط با دیتابیسclass CreateUsersTable extends Migration
: شروع تعریف یک کلاس مهاجرت به نام CreateUsersTablepublic 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 اگر وجود داشته باشد