محمد میرزاخانی
3 سال پیش توسط محمد میرزاخانی مطرح شد
4 پاسخ

کلید خارجی در لاراول

سلام دوستان
ببخشید چجوری میشه واسه ی رابطه های پلی مورفیک توی ماگریشن هاشون کلید خارجی تعریف کرد؟؟


ثبت پرسش جدید
محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 3 سال پیش مطرح شد
0

در روابط پلی مورفیک چون هر یک از رکورد ها میتونه به یک model متفاوت مربوط باشه دیگه تعریف کلید خارجی (FK) مثل حالت پیش فرض و ساده وجود نداره و البته نیازی هم به اینکار نیست.

اما نکته ای که هست برای اینکه از خاصیت indexing دیتابیستون استفاده کنید و سرعت اجرای کوئری ها بیشتر بشه حواستون باشه که توصیه میشه حتما یک index از نوع compound بر روی دو ستون تعیین کننده رابطه تعریف بشه. چیزی که بصورت اتومات وقتی FK تعریف می‌کردید انجام میشد و شاید خیلی متوجهش هم نمی‌شدید. اینجا باید بصورت دستی و مشخص انجام بشه. مثالش میشه اینجوری:

$table->string('commentable_type');
$table->unsignedBigInteger('commentable_id');
//Define index:
$table->index(['commentable_type', 'commentable_id']);

محمد میرزاخانی
@mirzamohammad.com 3 سال پیش مطرح شد
0

دوستان کسی نبود؟


حسین شیری نژاد
تخصص : programmer
@hosseinshirinegad98 3 سال پیش مطرح شد
0

سلام
در مورد روابط پالی مورفیک فارسی هم سرچ بزنید کلی آموزش بهتون میده


محمد میرزاخانی
@mirzamohammad.com 3 سال پیش مطرح شد
0

@hosseinshirinegad98
مشکلم کله روابط نیست فقط کلید خارجی اونم روی همین روابط هست اینکه اصن کلید خارجی تعریف میشه براشون یا نه اگه میشه چجوری.سرچ کردم پیدا نکردم


محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 3 سال پیش مطرح شد
0

در روابط پلی مورفیک چون هر یک از رکورد ها میتونه به یک model متفاوت مربوط باشه دیگه تعریف کلید خارجی (FK) مثل حالت پیش فرض و ساده وجود نداره و البته نیازی هم به اینکار نیست.

اما نکته ای که هست برای اینکه از خاصیت indexing دیتابیستون استفاده کنید و سرعت اجرای کوئری ها بیشتر بشه حواستون باشه که توصیه میشه حتما یک index از نوع compound بر روی دو ستون تعیین کننده رابطه تعریف بشه. چیزی که بصورت اتومات وقتی FK تعریف می‌کردید انجام میشد و شاید خیلی متوجهش هم نمی‌شدید. اینجا باید بصورت دستی و مشخص انجام بشه. مثالش میشه اینجوری:

$table->string('commentable_type');
$table->unsignedBigInteger('commentable_id');
//Define index:
$table->index(['commentable_type', 'commentable_id']);

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام