الـ Eager Loading في أي ORM (Object-Relational Mapping) هو أسلوب لتحسين الأداء عند جلب البيانات المرتبطة (relations) من قواعد البيانات. يُستخدم لتقليل عدد ال queries التي تُنفذ، ويمنع مشكلة الـ N+1 queries.
غالبًا ما يُستخدم Eager Loading لاسترجاع بيانات من جدول رئيسي مع العلاقات المرتبطة به، والتي قد تكون مثلاً من خلال جداول Pivots في العلاقات من نوع many-to-many.
مثال:
بدلًا من تنفيذ query مثل:
يمكنك في Laravel استخدام Eager Loading بهذه الطريقة:
وإذا كنت تريد فقط جلب الـ Posts التي لها Categories تحقق شرطًا معينًا، يمكنك استخدام whereHas Clause:
- الـwith() تستخدم في Laravel للـ Eager Loading.
- الـwhereHas() تستخدم ل filter النتائج بناءً على شروط داخل العلاقة.
- الفكرة ليست اختصار Query معقدة فقط، بل تحسين الأداء وتجنب التكرار غير الضروري في الاستعلامات.. وجعلها readable
#Laravel #PHP #EagerLoading #SQL #ORM
غالبًا ما يُستخدم Eager Loading لاسترجاع بيانات من جدول رئيسي مع العلاقات المرتبطة به، والتي قد تكون مثلاً من خلال جداول Pivots في العلاقات من نوع many-to-many.
مثال:
بدلًا من تنفيذ query مثل:
FROM posts
INNER JOIN category_post ON posts.id = category_post.post_id
INNER JOIN categories ON categories.id = category_post.category_id
WHERE posts.status = 'published';
يمكنك في Laravel استخدام Eager Loading بهذه الطريقة:
Post::with('categories')->where('status', 'published')->get();
وإذا كنت تريد فقط جلب الـ Posts التي لها Categories تحقق شرطًا معينًا، يمكنك استخدام whereHas Clause:
$query->where('name', 'like', '%PHP%');
})->with('categories')->get();
- الـwith() تستخدم في Laravel للـ Eager Loading.
- الـwhereHas() تستخدم ل filter النتائج بناءً على شروط داخل العلاقة.
- الفكرة ليست اختصار Query معقدة فقط، بل تحسين الأداء وتجنب التكرار غير الضروري في الاستعلامات.. وجعلها readable
#Laravel #PHP #EagerLoading #SQL #ORM