🛠️ Migrations در لاراول
📌 مدیریت ساختار دیتابیس بهصورت کدنویسی
🧠 Migrations چیست؟
Migrations ابزارهایی در لاراول هستند که برای مدیریت ساختار دیتابیس بهصورت کدنویسی طراحی شدهاند. بهوسیله Migrations میتوان تغییرات ساختار دیتابیس را به راحتی ساخت، اعمال، و بازگرداند بدون نیاز به دستکاری مستقیم پایگاه داده.
هدف اصلی Migrations اینه که همتیمیها بتونن تغییرات در دیتابیس رو بهراحتی اعمال و همگامسازی کنند.
🔧 ایجاد و اجرای Migration
۱. ساخت مایگریشن جدید:
برای ساخت یک Migration از دستور زیر استفاده میکنیم:
این دستور یک فایل مایگریشن در پوشه database/migrations ایجاد میکند.
۲. ویرایش فایل Migration
در فایل مایگریشنی که بهتازگی ایجاد شده، میتوانید ساختار جدول خود را تعریف کنید. مثلاً برای ایجاد جدول users:
در قسمت up() جداول و ستونهای جدید ایجاد میشود و در قسمت down() تغییرات برگردانده میشود.
🧳 استفاده از انواع ستونها
لاراول انواع مختلفی از ستونها رو برای جداول دیتابیس فراهم میکنه:
انواع دادههای پرکاربرد:
-
string(),text(),integer(),boolean(),date(),float(),foreignId()
🔄 اجرای Migration
بعد از ایجاد مایگریشن، برای اعمال تغییرات در دیتابیس از دستور زیر استفاده میکنیم:
این دستور تمام مایگریشنهایی که هنوز در دیتابیس اعمال نشدهاند رو اجرا میکند.
🛑 بازگرداندن Migration
اگر به هر دلیلی بخواهید تغییرات مایگریشنها رو لغو کنید، میتوانید از دستور زیر استفاده کنید:
برای بازگرداندن همهی تغییرات و بازگشت به وضعیت اولیه، میتوانید از این دستور استفاده کنید:
و برای انجام مجدد همهی مایگریشنها، این دستور رو اجرا کنید:
🔧 ایجاد جدول با کلید خارجی
یکی از ویژگیهای پرکاربرد Migrations در لاراول ایجاد رابطههای Foreign Key است.
مثال از ایجاد جدول posts که به جدول users مرتبط است:
در اینجا:
-
foreignId('user_id'): ایجاد ستونuser_idبهعنوان کلید خارجی. -
constrained(): بهطور خودکار به ستونidجدولusersمرتبط میشود. -
onDelete('cascade'): اگر یک رکورد از جدولusersحذف شود، تمام پستهای مرتبط با آن هم حذف میشوند.
🧑💻 چند نکته در کار با Migrations
-
استفاده از نامگذاری مناسب: هنگام ایجاد مایگریشنها، از نامهایی استفاده کنید که برای تیم توسعهدهنده معنیدار باشد، مثلاً
create_posts_tableیاadd_status_to_users_table. -
امکان اجرای همزمان مایگریشنها: لاراول از قابلیت
batchبرای اجرای چندین مایگریشن در یک لحظه پشتیبانی میکند. -
استفاده از
nullable(),default(),unique()برای ویژگیهای بیشتر ستونها:-
nullable(): ستونی که میتونه مقدار null داشته باشه. -
default(): مقدار پیشفرض برای ستون. -
unique(): اطمینان از اینکه مقادیر در ستون یکتا هستند.
-
-
هنگام بازگشت از Migration از
dropIfExists()استفاده کنید: این روش از خطاهای احتمالی جلوگیری میکند.
🔧 دستورات مهم Migrations
-
php artisan migrate: اجرای تمام مایگریشنهای جدید -
php artisan migrate:rollback: بازگشت به وضعیت قبل از آخرین مایگریشن -
php artisan migrate:reset: بازگشت به وضعیت اولیه (تمام مایگریشنها برگردانده میشوند) -
php artisan migrate:refresh: دوباره اجرای تمام مایگریشنها (برای اعمال تغییرات جدید) -
php artisan migrate:status: مشاهده وضعیت فعلی مایگریشنها
✅ جمعبندی
Migrations ابزار قدرتمندی در لاراول هستند که به شما این امکان را میدهند تا ساختار دیتابیس خود را بهصورت نسخهبندی شده و بهراحتی مدیریت کنید. با استفاده از مایگریشنها میتوانید جداول جدید بسازید، روابط بین آنها را تعریف کنید و تغییرات را بهراحتی اعمال یا بازگردانی کنید.