abbasudo/laravel-purity
Laravel Purity adds elegant filtering and sorting to Eloquent queries. Just call filter() on a model query, then let clients apply complex conditions via URL query parameters (e.g., filters[title][$contains]=...). Great for clean, flexible APIs.
Strengths:
filter() method, keeping controllers lean.?filters[title][$contains]=Laravel).NotBetweenFilter), field renaming, and relation-based sorting, making it adaptable to complex schemas.LIKE query handling).wire:model.live), reducing frontend-backend synchronization overhead.Weaknesses:
filters[] arrays) may introduce latency for high-cardinality filters or deeply nested relations. Requires benchmarking for production workloads.filter(['title', 'status'])). Misconfiguration risks SQL injection or excessive data exposure.filters[] query string format (e.g., Axios/React queries).allowedFields are not strictly defined, malicious users could craft queries targeting sensitive columns (e.g., filters[password][$contains]=test). Mitigation: Always whitelist fields and validate input.LIKE queries) could bloat database load. Mitigation: Test with production-like datasets; use database indexes.^3.3 in composer.json until stability is proven.EXPLAIN ANALYZE in PostgreSQL/MySQL.Post::filter(['title', 'published_at'])->get().password_hash) accidentally exposed? Audit allowedFields in all queries.filters[] format? Provide examples for React/Vue/Angular.?page=2) conflict with filtering? Purity supports both but requires testing.useQuery in React Router).where() chains in controllers).filter().
// Before
if (request('status')) {
$posts = $posts->where('status', request('status'));
}
// After
$posts = Post::filter()->get();
filters[] format.wire:model.live="filters").Post::withTrashed()->filter()).Cache::forget() for filtered queries./api/products).filters[] format.where() logic in controllers.How can I help you explore Laravel packages today?