سلام
هنگامی که از 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
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟