تکنولوژی نوین اینترنتی
در پایگاه داده، Foreign Key ستونی است که به کلید اصلی (primary key) یک جدول دیگر اشاره میکند. این کار باعث برقراری رابطه بین جدولها و حفظ انسجام دادهها میشود.
مثلاً در جدول posts، ستون user_id به ستون id جدول users اشاره میکند.
سپس در فایل مایگریشن:
| قسمت | توضیح |
|---|---|
unsignedBigInteger | چون id در جدول users از نوع bigIncrements هست |
foreign() | تعریف کلید خارجی |
references('id') | اشاره به ستون id جدول مقصد |
on('users') | جدول مقصد رابطه |
onDelete('cascade') | اگر user حذف شد، پستهاش هم حذف بشن |
از foreignId() استفاده کن:
این معادل همان کدی است که دستی نوشتیم، ولی کوتاهتر و خواناتر!
نکته: برای set null باید user_id را nullable تعریف کرده باشی:
اگر بخوای 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() کدت تمیزتر و استانداردتر میشه.