الـ 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
ال sql fundamentals ضرورية، لكتابة QUERIES صحيحة و Optimized لكن لدي مؤاخدة بسيطة على كثير من الناس التي تقول ان كتابة CRUD مع ال ORM سهلة جدا..، كتابة ال crud operations ليست سهلة في المشاريع المعقدة.. التي تحتاج inputs validations كثيرة، و updates ضخمة، و requests كثيرة،.. الامر ليس بالسهولة التي يتم تصويرها.
خصوصا لو اردت كتابة كود نقي، و يتبع مبادئ ال solid و ال dry.. انذاك تصبح عملية كتابة الكود صعيبة في البداية، لكن التعامل معه و تعديله مستقبلا يصير سهل.
و الله اعلى و اعلم.
#Laravel #ORM #SQL
خصوصا لو اردت كتابة كود نقي، و يتبع مبادئ ال solid و ال dry.. انذاك تصبح عملية كتابة الكود صعيبة في البداية، لكن التعامل معه و تعديله مستقبلا يصير سهل.
و الله اعلى و اعلم.
#Laravel #ORM #SQL
❤2