تکنولوژی نوین اینترنتی
در پایگاه داده، 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()
کدت تمیزتر و استانداردتر میشه.