لفرض أن لدي هذا الجدول
حيث يمكن للمستخدمين عمل فلتره إما بإستخدام العنوان، أو المستخدم أو الإثنان مع بعضهما
أحد الطرق التي يمكن كتابة دالة البحث من خلال إستخدام eloquent كالتالي:
public function search(Request $request) { $query = Article::query(); if (request('user_id')) { $query->where('user_id', request('user_id')); } if (request('title')) { $query->where('title', request('title')); } $articles = $query->get(); return view('/article', compact('articles')); }
كما نلاحظ أنه تم إستخدام if أكثر من مره لتحديد الطلب.
لكن يوجد طريقة تجعل الكود أكثر إحترافيه دون إستخدام الكثير من شرط if وذلك بإستخدام when
public function search(Request $request){ $users = User::get(); $query = Article::query(); $articles = Article::when(request('user_id'), function ($query) { return $query->where('user_id', request('user_id')); })->when(request('title'), function ($query) { return $query->where('title', request('title')); })->get(); return view('/article', compact('articles', 'users')); }
ملاحظة: العديد من المطورين يفضلون إستخدام if وذلك لأنها أسهل في القراءة.