"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > بناء مرشح نموذج Laravel قابل لإعادة الاستخدام للاستعلام الديناميكي

بناء مرشح نموذج Laravel قابل لإعادة الاستخدام للاستعلام الديناميكي

تم النشر بتاريخ 2024-08-27
تصفح:906

Building a Reusable Laravel Model Filter for Dynamic Querying

تشتهر Laravel بأناقتها وسهولة استخدامها، وأحد المجالات التي تتألق فيها حقًا هو الاستعلام عن قاعدة البيانات. في كثير من الأحيان، ستجد نفسك بحاجة إلى إنشاء استعلامات معقدة بناءً على مدخلات المستخدم أو العوامل الديناميكية الأخرى. يوفر Laravel's Eloquent ORM طريقة نظيفة وبسيطة للتفاعل مع قاعدة البيانات الخاصة بك، ولكن ماذا لو كنت تريد جعل استعلامات النموذج الخاصة بك أكثر مرونة؟ أدخل مفهوم تصفية النماذج.

في هذه المدونة، سنستكشف كيفية إنشاء مرشح نموذجي قوي وقابل لإعادة الاستخدام في Laravel. سيسمح لك هذا بتطبيق شروط الاستعلام ديناميكيًا استنادًا إلى معلمات الطلب الواردة، مما يجعل استعلامات Eloquent الخاصة بك أكثر نمطية وقابلة للصيانة.

لماذا نستخدم مرشح النموذج؟

مرشح النموذج في Laravel هو فئة تحتوي على كل المنطق المطلوب لبناء شروط استعلام ديناميكية بناءً على مدخلات المستخدم. يساعد هذا في الحفاظ على نظافة وحدات التحكم الخاصة بك، وإعادة استخدام التعليمات البرمجية، وجعل تطبيقك أكثر معيارية.

مزايا استخدام مرشح النموذج:

  • فصل الاهتمامات : يحافظ على نظافة وحدة التحكم الخاصة بك عن طريق نقل منطق الاستعلام إلى فئة مخصصة.

  • قابلية إعادة الاستخدام : يسمح لك بإعادة استخدام نفس منطق التصفية عبر وحدات تحكم أو استعلامات متعددة.

  • المرونة : تجعل من السهل إضافة أو تعديل شروط الاستعلام دون تغيير المنطق الأساسي لتطبيقك.

دليل خطوة بخطوة لتنفيذ مرشح نموذجي

الخطوة 1: إعداد فئة التصفية

ابدأ بإنشاء فئة عامل تصفية أساسية تتعامل مع الإضافة الديناميكية لشروط الاستعلام. سيهتم هذا الفصل بتطبيق المرشحات بناءً على بيانات الطلب.

request = $request;
    }

    public function apply(Builder $builder)
    {
        $this->builder = $builder;

        foreach ($this->filters() as $filter => $value) {
            if (method_exists($this, $filter)) {
                $this->$filter($value);
            }
        }

        return $this->builder;
    }

    public function filters()
    {
        return $this->request->all();
    }
}

الخطوة 2: إنشاء فئات تصفية محددة

بعد ذلك، قم بإنشاء فئة مرشح محددة للنموذج الذي تريد تصفيته. ستعمل هذه الفئة على توسيع فئة QueryFilter الأساسية وستحتوي على أساليب لكل سمة قابلة للتصفية.

على سبيل المثال، لنفترض أن لديك نموذج منتج وتريد التصفية حسب الفئة والسعر والتوفر.

builder->where('category_id', $value);
    }

    public function price($value)
    {
        return $this->builder->where('price', 'builder->where('availability', $value);
    }
}

الخطوة 3: تطبيق الفلتر في وحدة التحكم الخاصة بك

الآن، قم بتطبيق عامل التصفية في وحدة التحكم الخاصة بك لتصفية النتائج ديناميكيًا بناءً على معلمات الطلب.

get();

        return view('products.index', compact('products'));
    }
}

الخطوة 4: إضافة نطاق مرشح إلى النموذج

لتسهيل تطبيق المرشحات، أضف نطاقًا إلى نموذج Eloquent الخاص بك.

apply($query);
    }
}

الخطوة 5: استخدام الفلتر في التطبيق الخاص بك

بعد إعداد كل شيء، يمكنك الآن تصفية نموذج المنتج الخاص بك بسهولة بناءً على معلمات الطلب الوارد. على سبيل المثال:

// Example: /products?category=1&price=100&availability=in_stock

سيقوم عنوان URL هذا بتصفية المنتجات بناءً على الفئة المحددة والسعر والتوفر، وسيتم عرض النتائج التي تمت تصفيتها للمستخدم.

خاتمة

تعد تصفية النماذج في Laravel طريقة فعالة للتعامل مع شروط الاستعلام الديناميكي باستخدام تعليمات برمجية نظيفة وقابلة لإعادة الاستخدام. باتباع الخطوات المذكورة أعلاه، يمكنك إنشاء نظام تصفية مرن يعمل على تبسيط وحدات التحكم الخاصة بك ويجعل تطبيقك أكثر قابلية للصيانة. لا يساعد هذا الأسلوب في كتابة تعليمات برمجية أقل فحسب، بل يجعل استعلاماتك أكثر قابلية للتكيف مع المتطلبات المستقبلية.

في رحلتك كمطور Laravel، سيؤدي إتقان مثل هذه الأنماط إلى تحسين جودة تطبيقاتك وقابلية التوسع بشكل كبير. لذا، جرّبها وانتقل باستفساراتك حول Laravel إلى المستوى التالي!

يتمتع!

بيان الافراج تم إعادة إنتاج هذه المقالة على: https://dev.to/rafaelogic/building-a-reusable-laravel-model-filter-for-dynamic-querying-409e?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3