انتقل إلى محتوى الدرس

Nested and Specific Column Loading التحميل المتداخل وتحديد الأعمدة

تشخيص مشكلة الأداء N+1 Query الناتجة عن التحميل الكسول وحلها جذرياً عبر التحميل المسبق بالدالة with ومنع التحميل الكسول.
1 صفوف تعليمية
إطار العمل Laravel
0 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

يمكنك تطبيق التحميل المسبق على العلاقات المتداخلة عبر عدة نماذج باستخدام الصيغة النقطية، مثل تحميل مؤلف المقال وملفه الشخصي معاً عبر user.profile. ولتقليل استهلاك الذاكرة بشكل أكبر، حدد الأعمدة المطلوبة فقط بعد نقطتين رأسيتين مثل user:id,name مع الالتزام الدائم بتضمين عمود المعرف الأساسي.

  • التداخل بالصيغة النقطية (Dot Notation): حمّل العلاقات الفرعية المتسلسلة بسهولة عبر كتابة مسار العلاقة مفصولاً بنقطة.
  • اختيار أعمدة محددة (Column Selection): حدد أسماء الأعمدة المطلوبة بعد النقطتين لتجنب جلب النصوص الطويلة غير اللازمة.
  • إلزامية مفاتيح الربط (Key Requirement): احرص دائماً على تضمين عمود id ومفتاح الربط الأجنبي وإلا ستعود العلاقة فارغة.
PHP
$posts = Post::with([
    'user:id,name',
    'comments.author:id,name',
])->get();