How to use eloquent when in laravel

How to use eloquent when in laravel

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 read more about this type of article on the site

Please follow and like us:
Pin Share