شرح صفوف ومحتوى الفقرة
إن استدعاء علاقة 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),
];
}