spatie/laravel-query-builder
Safely build Eloquent queries from incoming API requests. Allowlist filters, sorts, includes, and fields; supports partial/exact and custom filters, nested relationships, relation counts, and default values. Works with existing queries for clean, consistent endpoints.
/users?filter[status]=active&sort=-created_at).Request handling for filter[], include[], etc.). MIT license mitigates vendor lock-in.QueryBuilder::for($existingQuery).filter[tenant_id] without exposing raw SQL.LIKE %value% on large tables). Optimize with database indexes or full-text search.DB::query().GROUP BY, HAVING). Combine with Laravel’s query builder or use a reporting tool (e.g., Laravel Scout).express-query-int).For Executives:
"This package standardizes how our APIs handle filtering, sorting, and data inclusion—reducing dev time by 30%+ for common query patterns. For example, a frontend team can now fetch ‘active users with posts sorted by name’ via /users?filter[status]=active&include=posts&sort=-name without backend changes. It also improves security by whitelisting allowed query parameters, cutting SQL injection risks. Low maintenance (MIT-licensed, 4.4K stars) and aligns with our Laravel stack."
For Engineers:
*"Spatie’s Query Builder lets you replace manual Request parsing for filter[], include[], etc., with declarative rules like:
QueryBuilder::for(User::class)
->allowedFilters('name', 'email') // Auto-parses ?filter[name]=john
->allowedIncludes('posts') // Handles ?include=posts
->allowedSorts('created_at'); // Supports ?sort=-created_at
if ($request->has('filter[name]')) logic.QueryBuilder::for($query->where(...))).LIKE) may impact performance on large tables (mitigate with indexes).For Designers/Product Managers: *"This enables self-service data exploration for users (e.g., filtering support tickets by status/date). For example:
How can I help you explore Laravel packages today?