mnabialek/laravel-eloquent-filter
Filter classes, improving maintainability.whereJsonContains, whereBetween with nullable values).where() clauses in controllers or repositories.whereJsonLength, orWhereDoesntHave).whereHas or orWhere conditions).with()) can trigger N+1 query issues, especially in nested relationships.withTrashed() integration).spatie/laravel-query-builder) in the long term?spatie/laravel-query-builder, beberlei/DoctrineExtensions) better meet the project’s needs?/users?status=active&role=admin).groupBy with conditions).where() clauses in controllers, repositories, or services that could be replaced by filters.Filter classes for 1–2 endpoints (e.g., a user search or product listing).status=active).Filter classes (e.g., UserFilter, OrderFilter).where() clauses in controllers with Filter::apply() or query()->filter().// Before
$users = User::where('status', $request->status)
->where('created_at', '>', $request->date)
->get();
// After
$filter = new UserFilter($request->all());
$users = User::filter($filter)->get();
FormRequest validation to sanitize filter inputs (e.g., whitelist allowed columns).public function rules()
{
return [
'status' => 'sometimes|in:active,pending,archived',
'date' => 'sometimes|date',
];
}
Filter classes).spatie/laravel-query-builder as an alternative.trait Filterable
{
public function scopeFilter($query, array $filters)
{
foreach ($filters as $field => $value) {
if (str_contains($field, '>')) {
[$field, $operator] = explode('>', $field);
$query->where($field, $operator, $value);
}
// Add more operators as needed
}
return $query
How can I help you explore Laravel packages today?