@davoodkhany
@ali.bayat
میشه یه آموزش lazy load درلاراول رو معرفی کنید که ساده باشه
به صورت پیش فرض ... دسترسی به داده ها در الکوئنت "Lazy loaded" هست.
یعنی وقتی از الکوئنت به شکل زیر استفاده میکنی:
$posts = Post:all();
کوئری که لاراول میسازه به این شکله:
select * from `posts`
حالا فرض کن این مدل پست یه رابطه (Relationship) از نوع belongsTo داره به مدل Category ..
foreach ($posts as $post) {
echo $post->category->name; // لیزی لود همینه
}
مشکل این لیزی لود اینه که.. به ازای هر یک پست که در دیتابیس وجود داره یک کوئری بوجود میاد. مثلا اگر ۴۰ تا پست توی جدول داشته باشیم: تعداد کوئری که با همون یک خط بالا بوجود میاد برابر با ۴۰ + ۱ هست.
به این داستان مشکل N + 1 هم میگن.
برای همین توصیه میشه به جای اینکار (استفاده از لیزی لودینگ) از Eager-Loading استفاده بشه..
اطلاعات بیشتر در مقاله زیر:
https://medium.com/@kouipheng.lee/laravel-eloquent-lazy-vs-eager-loaded-803852c59e1c
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟