آموزش ارتباط hasMany در لاراول

مدل‌های تعریف شده در لاراول می‌توانند با شیوه‌های مختلف به یکدیگر ارتباط داشته باشند. یکی از پرکاربردترین ارتباط‌های قابل استفاده، ارتباط hasMany است.
لاراول
این ارتباط مشخص می‌کند که یک مدل دارای یک یا چندین نمونه از یک مدل دیگر است برای مثال:
  • یک استان دارای چندین شهر است
  • یک کلاس دارای چندین دانش آموز است
  • یک مدرسه دارای چندین کلاس است
  • یک پروژه دارای چندین فعالیت است
برای تعریف یک ارتباط از نوع hasMany به شکل زیر عمل می‌کنیم. برای مثال ایجاد ارتباط میان استان و شهرهای استان:

این قطعه کد در مدل Province.php درج می‌شود به شکل زیر قابل استفاده است:

همچنین می‌توان روی کوئری ایجاد شده برای شهرها شرط قرار داد:

برای بارگزاری حریصانه مدل‌های فرزند هم به شکل زیر عمل می‌کنیم تا تعداد کوئری‌های ایجاد شده روی پایگاه داده به حداقل برسد:

دستور بالا برای تمامی استان‌ها و شهرها تنها از دو کوئری استفاده می‌کند و شهرهای هر استان را به صورت خودکار در همان استان بارگزاری می‌کند. در هنگام طراحی سایت با لاراول، بارگزاری حریصانه یا Eager Loading در هنگام استفاده از hasMany ضروری و پر اهمیت است زیرا در غیر این صورت به ازای هر ردیف از مدل اول یک کوئری روی جدول دوم اجرا می‌شود که می‌تواند سرعت و عملکرد سایت را به مقدار زیادی کاهش دهد.

همچنین لازم است تا روی ستون کلیدی جدول دوم( در اینجا province_id ) عمل index گذاری انجام شود تا جستجو با بیشترین سرعت ممکن به انجام برسد.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *