DEV Community

Rohit Urane
Rohit Urane

Posted on

How to use eloquent when in laravel

Image description

In this article, We are implementing laravel eloquent when condition. In the filter-out process, we use the if-else condition on request. Check the code below.

 if($request->filter_by == 'amount') { $query->where('amount', '>', request('amount', 0)); } if($request->filter_by == 'created_at') { $query->orderBy('created_at', request('order', 'desc')); } 
Enter fullscreen mode Exit fullscreen mode

How to use eloquent when in laravel

You can use the when() method. It is more readable and user-friendly. Check the code below.

 $query = Order::query(); $query->when(request('filter_by') == 'amount', function($q){ return $q->where('amount','>', request('amount',0)); }); $query->when(request('filter_by') == 'created_at', function($q){ return $q->orderBy('created_at', request('order','desc')); }); 
Enter fullscreen mode Exit fullscreen mode

You can pass the third argument to the when method. This closure will only execute if the first argument evaluates as false.

 $query = Order::query(); $query->when(request('filter_by') == 'amount', function($q){ return $q->where('amount','>', request('amount',0)); }, function($q){ return $q->orderBy('created_at', request('order','desc')); })->get(); 
Enter fullscreen mode Exit fullscreen mode

It's not just a prettier way to write the same "IF" but is also a great way to organize conditional queries.

You can read more about this type of article on the site

Top comments (0)