إتقان أداء Laravel

أنت بحاجة إلى تطبيقات ويب سريعة. التطبيقات البطيئة تثير إحباط المستخدمين وتضر بعملك. يمكن لمشكلة "N+1 query problem" أن تبطئ تطبيقات Laravel الخاصة بك. ولكن Laravel لديه حل: التحميل المسبق (eager loading).

تساعدك هذه التقنية على إتقان الدالة with(). ستتعلم كيفية الحفاظ على سرعة وكفاءة تطبيقاتك.

لنلقِ نظرة على مثال. لديك منصة تدوين. كل منشور ينتمي إلى مؤلف. تريد عرض قائمة بالمنشورات مع مؤلف كل منشور.

النهج الشائع هو جلب جميع المنشورات، ثم جلب مؤلف كل منشور. يؤدي هذا إلى العديد من استعلامات قاعدة البيانات.

إذا كان لديك 100 منشور، فسيقوم هذا الكود بإجراء 101 استعلام لقاعدة البيانات. هذه هي "N+1 query problem". فهي تسبب عبئاً إضافياً وتؤدي إلى إبطاء تطبيقك.

تحل الدالة with() هذه المشكلة. فهي تجلب جميع النماذج (models) المرتبطة في استعلام واحد أو اثنين.

يمكنك استخدامها بهذا الشكل: $posts = App\Models\Post::with('author')->get();

يقوم هذا الكود بجلب جميع المنشورات ومؤلفيها في استعلامين فقط.

يمكنك أيضاً تحميل علاقات متعددة: $posts = App\Models\Post::with(['author', 'category'])->get();

أو تحميل علاقات متداخلة: $posts = App\Models\Post::with('author.profile')->get();

يعد التحميل المسبق (eager loading) مفتاحاً لبناء تطبيقات Laravel سريعة. فهو يقضي على مشكلة "N+1 query problem" ويقلل من استعلامات قاعدة البيانات.

استخدم الدالة with() لتحسين أداء تطبيقك.

المصدر: https://dev.to/prabashanadev/mastering-laravel-performance-a-deep-dive-into-eager-loading-22l0