Eloquent When بدلا من إستخدام if في laravel eloquent

Eloquent When بدلا من إستخدام if في laravel eloquent

2024-03-04 وقت القراءه : 1 دقائق

لفرض أن لدي هذا الجدول

حيث يمكن للمستخدمين عمل فلتره إما بإستخدام العنوان، أو المستخدم أو الإثنان مع بعضهما

أحد الطرق التي يمكن كتابة دالة البحث من خلال إستخدام 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 وذلك لأنها أسهل في القراءة.

إضافة تعليق
Loading...