ساخت Migration در Laravel: راهنمای جامع
Laravel، فریمورک محبوب PHP، ابزارهای قدرتمندی برای مدیریت ساختار پایگاه داده ارائه میدهد. Migrationها یکی از این ابزارها هستند که به شما امکان میدهند تغییرات ساختار پایگاه داده را به صورت نسخهبندی شده و قابل تکرار اعمال کنید. این مقاله به بررسی عمیق ساخت Migration در Laravel، کاربردها، مفاهیم کلیدی و بهترین روشها میپردازد.
مقدمهای بر Migrationها
Migrationها در اصل فایلهای PHP هستند که شامل دستورالعملهایی برای ایجاد، تغییر یا حذف جداول و ستونها در پایگاه داده شما میباشند. به جای اینکه مستقیماً دستورات SQL را اجرا کنید، از Migrationها استفاده میکنید. این کار مزایای متعددی دارد:
- نسخهبندی: هر تغییر در ساختار پایگاه داده به عنوان یک Migration جدید ثبت میشود. این امکان را فراهم میکند تا به راحتی به نسخههای قبلی بازگردید یا تغییرات را به صورت مرحلهای اعمال کنید.
- همکاری تیمی: Migrationها به تیمهای توسعه اجازه میدهند تا به طور هماهنگ ساختار پایگاه داده را تغییر دهند، بدون اینکه نگران تداخلات شوند.
- استقرار آسان: Migrationها به شما امکان میدهند تا ساختار پایگاه داده را به همراه کد برنامه خود مستقر کنید.
- قابلیت تکرار: میتوانید Migrationها را چندین بار اجرا کنید، بدون اینکه نگران ایجاد خطا شوید.
ساخت یک Migration جدید
برای ایجاد یک Migration جدید، از دستور Artisan زیر استفاده کنید:
php artisan make:migration create_users_table
در این دستور، create_users_table نام Migration است. Laravel به طور خودکار یک فایل PHP در دایرکتوری database/migrations ایجاد میکند. نام فایل شامل تاریخ و زمان ایجاد Migration نیز خواهد بود. این نامگذاری به Laravel کمک میکند تا ترتیب اجرای Migrationها را تعیین کند.
همچنین میتوانید از گزینههای دیگری برای ایجاد Migration استفاده کنید:
--create=table_name: برای ایجاد یک جدول جدید.--table=table_name: برای تغییر یک جدول موجود.
به عنوان مثال، برای تغییر جدول posts، میتوانید از دستور زیر استفاده کنید:
php artisan make:migration add_column_to_posts_table --table=posts
ساختار یک فایل Migration
یک فایل Migration معمولاً شامل دو متد اصلی است:
up(): این متد شامل دستورالعملهایی برای اعمال تغییرات در پایگاه داده است. به عنوان مثال، ایجاد یک جدول جدید، اضافه کردن یک ستون، یا تغییر نوع داده یک ستون.down(): این متد شامل دستورالعملهایی برای بازگرداندن تغییرات اعمال شده توسط متدup()است. به عنوان مثال، حذف یک جدول، حذف یک ستون، یا بازگرداندن نوع داده یک ستون به حالت قبلی.
Laravel از یک شیء fluent به نام Schema برای تعریف ساختار پایگاه داده استفاده میکند. این شیء متدهایی را برای ایجاد و تغییر جداول و ستونها ارائه میدهد.
مثال: ایجاد جدول Users
در اینجا یک مثال از یک فایل Migration برای ایجاد جدول users آورده شده است:
id();
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('users');
}
};
در این مثال:
Schema::create('users', function (Blueprint $table) { ... });: یک جدول جدید به نامusersایجاد میکند.$table->id();: یک ستونid(کلید اصلی) از نوع auto-increment ایجاد میکند.$table->string('name');: یک ستونnameاز نوع string ایجاد میکند.$table->string('email')->unique();: یک ستونemailاز نوع string ایجاد میکند و آن را به عنوان یک مقدار منحصر به فرد تعریف میکند.$table->timestamp('email_verified_at')->nullable();: یک ستونemail_verified_atاز نوع timestamp ایجاد میکند و اجازه میدهد مقدار آن null باشد.$table->string('password');: یک ستونpasswordاز نوع string ایجاد میکند.$table->rememberToken();: یک ستونremember_tokenبرای ذخیره توکنهای یادآوری ایجاد میکند.$table->timestamps();: دو ستونcreated_atوupdated_atاز نوع timestamp ایجاد میکند.Schema::dropIfExists('users');: در متدdown()، جدولusersرا در صورت وجود حذف میکند.
اجرای Migrationها
برای اجرای Migrationها، از دستور Artisan زیر استفاده کنید:
php artisan migrate
این دستور تمام Migrationهای موجود در دایرکتوری database/migrations را که هنوز اجرا نشدهاند، اجرا میکند. Laravel به طور خودکار ترتیب اجرای Migrationها را بر اساس نام فایل آنها تعیین میکند.
بازگرداندن Migrationها (Rollback)
برای بازگرداندن آخرین Migration اجرا شده، از دستور Artisan زیر استفاده کنید:
php artisan migrate:rollback
این دستور متد down() آخرین Migration اجرا شده را فراخوانی میکند و تغییرات آن را باز میگرداند.
برای بازگرداندن تعداد مشخصی از Migrationها، میتوانید از گزینه --step استفاده کنید:
php artisan migrate:rollback --step=2
این دستور دو Migration آخر را باز میگرداند.
Reset کردن Migrationها
برای حذف تمام جداول پایگاه داده و اجرای مجدد تمام Migrationها، از دستور Artisan زیر استفاده کنید:
php artisan migrate:refresh
این دستور تمام جداول پایگاه داده را حذف میکند و سپس تمام Migrationها را اجرا میکند.
برای حذف تمام جداول و اجرای مجدد Migrationها بدون درخواست تایید، میتوانید از گزینه --force استفاده کنید:
php artisan migrate:refresh --force
استفاده از Schema Builder
Laravel Schema Builder ابزارهای قدرتمندی برای تعریف ساختار پایگاه داده ارائه میدهد. برخی از متدهای مهم Schema Builder عبارتند از:
$table->increments('id');: ایجاد یک ستون auto-incrementing unsigned integer.$table->bigIncrements('id');: ایجاد یک ستون auto-incrementing unsigned big integer.$table->string('name', 255);: ایجاد یک ستون string با طول 255 کاراکتر.$table->text('description');: ایجاد یک ستون text.$table->integer('age');: ایجاد یک ستون integer.$table->float('price', 8, 2);: ایجاد یک ستون float با 8 رقم کل و 2 رقم اعشار.$table->boolean('is_active');: ایجاد یک ستون boolean.$table->date('published_at');: ایجاد یک ستون date.$table->timestamp('created_at');: ایجاد یک ستون timestamp.$table->unique('email');: ایجاد یک ایندکس منحصر به فرد بر روی ستونemail.$table->index('name');: ایجاد یک ایندکس بر روی ستونname.$table->foreign('user_id')->references('id')->on('users');: ایجاد یک کلید خارجی به جدولusers.
بهترین روشها
- نامگذاری مناسب: از نامهای توصیفی برای Migrationها استفاده کنید تا به راحتی بتوانید هدف آنها را درک کنید.
- تست Migrationها: قبل از استقرار Migrationها در محیط production، آنها را در محیط development تست کنید.
- استفاده از Schema Builder: از Schema Builder برای تعریف ساختار پایگاه داده استفاده کنید، زیرا این کار کد شما را خواناتر و قابل نگهداریتر میکند.
- نگهداری از متد down(): همیشه متد
down()را به درستی پیادهسازی کنید تا بتوانید تغییرات را به راحتی بازگردانید.
با استفاده از Migrationها در Laravel، میتوانید ساختار پایگاه داده خود را به صورت منظم، نسخهبندی شده و قابل تکرار مدیریت کنید. این کار به شما کمک میکند تا فرآیند توسعه و استقرار برنامه خود را سادهتر و کارآمدتر کنید.
