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

Nested Relations with whenLoaded تضمين العلاقات بدالة whenLoaded

تحويل نماذج البيانات إلى استجابات JSON معيارية عبر Eloquent API Resources وتضمين العلاقات المشروطة بـ whenLoaded.
1 صفوف تعليمية
إطار العمل Laravel
0 مشاهدة

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

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

إن استدعاء علاقة Eloquent مباشرة داخل كلاس المورد قد يؤدي لتشغيل استعلامات تحميل كسول غير مقصودة لكل سجل في المجموعة. يضمن استخدام دالة $this->whenLoaded عدم تضمين العلاقة الفرعية إلا إذا تم تحميلها مسبقاً عبر دالة with.

  • منع استعلامات N+1 (Preventing N+1 Queries): يتجنب تشغيل استعلامات إضافية أثناء تحويل JSON إذا لم يقم المتحكم بالتحميل المسبق.
  • تركيب الموارد المتداخلة (Composable Resource Trees): ادمج الموارد الفرعية مع دالة whenLoaded لبناء شجرة بيانات متداخلة ونظيفة.
  • بيانات الجدول الوسيط (Conditional Pivot Data): استخدم دالة $this->whenPivotLoaded لإظهار حقول الجدول الوسيط بأمان في علاقات متعدد لمتعدد.
PHP
public function toArray(Request $request): array
{
    $rel = $this->whenLoaded('comments');
    return [
        'id'       => $this->id,
        'comments' => CommentResource::collection($rel),
    ];
}