How Eloquent Filter works (Concept)
masterEloquent Filter provides a clean way to apply complex query logic based on request parameters. Instead of manually writing multiple if ($request->has(...)) blocks and complex whereHas closures in your controller, you can use the filter() method on your Eloquent model.
Standard Approach (Manual):
$query = User::where('company_id', $request->input('company_id'));
if ($request->has('name')) {
$query->where(function ($q) use ($request) {
return $q->where('first_name', 'LIKE', $request->input('name') . '%')
->orWhere('last_name', 'LIKE', '%' . $request->input('name') . '%');
});
}
return $query->get();Eloquent Filter Approach:
return User::filter($request->all())->get();The logic for how each parameter affects the query is encapsulated within a dedicated Filter class.