سلام
هنگامی که از with
در هنگام دریافت داده از بانک اطلاعاتی استفاده می کنیم، میاد اطلاعات مرتبط رو هم همزمان میگیره.
برای مثال عبارت زیر رو در حالتی که جدول مربوط به مدل city
یک ستون به اسم province_id
داشته باشه نظر بگیرید:
App\City::with('province')->get();
در هنگام دریافت اطلاعات میاد بررسی میکنه که در ستون province_id
چه اعدادی اومده، اونها یکتا میکنه و از جدول مربوطه اطلاعات رو می خونه و میشه برای تک تک داده ها مستقیم به اطلاعات جدول مرتبط دسترسی داشته باشیم.
این روش برای رفع مشکل n+1 کوئری که معمولا دردسر ساز هست کمک بسیار موثر محسوب میشه و قطعا با join
تفاوت داره.
یک ویژگی دوست داشتنی در تابع with
امکان استفاده بعد از دریافت داده هست. مثلا
$books = App\Book::all();
if ($someCondition) {
$books->load('author', 'publisher');
}
همون طور که احتمالا قبلا هم دیدید روش پیاده سازی در آدرس زیر موجود هست:
Eager Loading
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟