Pros:
Cons:
date fields are valid ISO strings), adding overhead.composer require and a single configuration step.Mockery or Laravel’s DatabaseMigrations).LIKE on large text fields) could degrade query performance. Requires profiling during adoption.where() approach may suffice.spatie/laravel-query-builder)?
spatie/laravel-query-builder (more feature-rich but heavier).OR clauses on indexed columns) could require performance tuning post-integration./users?role=admin&status=active).date, customer, status).tenant_id in all queries).Http::fake() for filter validation).repositories/eloquent-graphql-filter instead.jenssegers/eloquent-mongodb or custom solutions.spatie/laravel-query-builder, manual where()).UserFilter) in a non-critical endpoint.where() clauses in controllers with filter classes.Filters service (e.g., app/Services/FilterService).ValidateFilters).where() usage and phase out over 2–3 releases.query()->where() vs. where() chaining).pdo, mbstring (standard in Laravel).bcmath or gd).RAW functions for SQL Server).composer.json and run composer update.php artisan vendor:publish.Filter class (e.g., app/Filters/BaseFilter.php).UserFilter, OrderFilter).// Before
public function index(Request $request) {
return User::where('status', $request->status)->get();
}
// After
public function index(Request $request) {
return (new UserFilter($request))->apply(User::query())->get();
}
LIKE '%term%').app/Filters), reducing duplication.Mockery for Eloquent queries).UserFilter, UserRoleFilter, UserStatusFilter) can bloat the codebase.toSql()).FilterException handler).filter:applied events).where() clauses for critical filters.where('status', 'active') vs. where('name', 'LIKE', '%term%')).Cache::remember('filtered_users_active', ...)).SELECT *; use select() to fetch only needed columns.How can I help you explore Laravel packages today?