How To Use Eloquent When In Laravel — DevRohit

Rohit urane
2 min readJul 7, 2024

--

Hi guys,

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'));
}

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'));
});

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();

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

You can check developer tools on the Supertools website. Please give me feedback on this website.

Thank you for reading this article. Please share this article with your friend circle. That’s it for the day. Stay Connected!

Cheers

Originally published at https://www.devrohit.com on July 7, 2024.

--

--

Rohit urane
Rohit urane

Written by Rohit urane

enthusiastic full stack developer to build application

No responses yet