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

Preventing Lazy Loading in Dev منع التحميل الكسول أثناء التطوير

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

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

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

لاكتشاف استعلامات N+1 غير المقصودة مبكراً قبل وصول الكود إلى بيئة الإنتاج، يتيح لك Laravel تعطيل التحميل الكسول كلياً عبر استدعاء Model::preventLazyLoading داخل المزود AppServiceProvider. تمرير شرط عدم كون البيئة إنتاجية يطلق استثناءً واضحاً ينبه المبرمج فوراً أثناء التطوير مع الحفاظ على استمرار عمل الموقع في الإنتاج.

  • منع التحميل الكسول (preventLazyLoading): يأمر Eloquent بإطلاق استثناء تنبيهي فور محاولة قراءة علاقة لم يتم تحميلها مسبقاً.
  • الربط ببيئة التطوير (Non-Production Guard): تفعيله في غير بيئة الإنتاج يكشف أخطاء الأداء للمطور فوراً دون تعطيل الزوار الفعليين.
  • الوضع الصارم الشامل (Model::shouldBeStrict): يفعل منع التحميل الكسول ويمنع تجاهل الحقول غير القابلة للتعبئة بصمت.
PHP
use Illuminate\Database\Eloquent\Model;

public function boot(): void
{
    Model::preventLazyLoading(
        ! $this->app->isProduction()
    );
}