در مستندات laravel مزایای eager loading به خوبی گفته شده ولی می خواستم بدونم آیا همیشه موقعی که به رابطه جداول نیاز داریم بهتره از این روش استفاده کنیم یا اینکه معایبی هم داره؟
سرچ دادم ، مثل اینکه معایبی نداره :)
طبق مستندات بهتره موقعی که احتیاج به join جداول دارید حتما از eager loading استفاده کنید.
سلام دوست عزیز.
در orm ها ما با یک مشکلی مواجهیم به نام \"N+1 query problem\". که اگر این رو سرچ کنید متوجه قضیه میشید.
ولی خلاصه بخوام بگم فرضا شما یک جدول خودرو (Cars) دارید و یک جدول دیگه مثلا چرخ (wheel) الان هر خودرو میتونه تعداد زیادی چرخ داشته باشه و هر چرخ متعلق به یک حودرو هستش (one-to-many relationship)
بعد فرضا ما کالکشن cars رو میگیریم . و بعدش چند خط پایین تر قراره یک حلقه بزنیم و مشخصات چرخ ها رو هم بگیریم .
$cars = Cars::all();
foreach ($cars as $car ){
$wheel_types[] = $car->wheel->type;
}
الان این حلقه یک query برای گرفتن کل خودرو ها و N تا query برای گرفتن چرخ ها در دیتابیس اجرا میکنه که این عمل میتونه دیتابیستون رو در تعداد درخواست های بالا فلج کنه و سایتتون بسیار کند میشه. راه حل استفاده از eager loading هستش یعنی موقع گرفتن خودروها بگیم که چرخ ها رو هم با همون query بگیر. که این جوری فقط دو تا query اجرا میشه و کدتون optimize میشه.
$cars = Cars::with('wheels')->all();
که wheels جدول چرخ ها هستش.
توضیحات کامل تر در مستندات خود لاراول هستش.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟