🔗 Foreign Keys در Migrations لاراول
📌 تعریف رابطه بین جدولها به روش استاندارد
🧠 Foreign Key چیست؟
در پایگاه داده، Foreign Key ستونی است که به کلید اصلی (primary key) یک جدول دیگر اشاره میکند. این کار باعث برقراری رابطه بین جدولها و حفظ انسجام دادهها میشود.
مثلاً در جدول posts، ستون user_id به ستون id جدول users اشاره میکند.
🛠️ ساخت جدول با Foreign Key در Laravel
سپس در فایل مایگریشن:
📌 توضیح کد بالا
| قسمت | توضیح |
|---|---|
unsignedBigInteger | چون id در جدول users از نوع bigIncrements هست |
foreign() | تعریف کلید خارجی |
references('id') | اشاره به ستون id جدول مقصد |
on('users') | جدول مقصد رابطه |
onDelete('cascade') | اگر user حذف شد، پستهاش هم حذف بشن |
⚙️ روش سادهتر با Eloquent:
از foreignId() استفاده کن:
این معادل همان کدی است که دستی نوشتیم، ولی کوتاهتر و خواناتر!
🔄 گزینههای حذف و بهروزرسانی
نکته: برای set null باید user_id را nullable تعریف کرده باشی:
🧹 حذف Foreign Key در مایگریشنها
اگر بخوای foreign key رو حذف کنی:
یا اگر اسم constraint رو میدونی:
برای دیدن نام Foreign Key constraint میتونی از ابزارهای پایگاه داده مثل phpMyAdmin یا
SHOW CREATE TABLEاستفاده کنی.
📋 چند مثال کاربردی
✅ جدول comments که به posts و users متصل است:
🧪 چکلیست تعریف کلید خارجی
-
ستون از نوع
unsignedBigIntegerیاforeignIdباشه -
رابطه
referencesوonمشخص باشه -
گزینههای
onDeleteوonUpdateبه درستی تنظیم شده باشه -
اگر
set null، حتماً nullable باشه -
ایندکسها بهدرستی تعریف شده باشن (در صورت نیاز)
✅ جمعبندی
تعریف Foreign Key در Laravel Migration نهتنها ساختار دیتابیس رو منظمتر میکنه، بلکه جلوی ورود دادههای نادرست رو هم میگیره. با استفاده از foreignId()->constrained() کدت تمیزتر و استانداردتر میشه.