laraditz/saring
Saring is a simple Eloquent model filtering package for Laravel and Lumen. Add the Filterable trait to models, create per-model filter classes (e.g., UserFilter), optionally whitelist filterable fields, and call Model::filter($request->all()).
where() clauses, risking SQL injection if not sanitized externally.<ModelName>Filter) may not align with existing codebases.LIKE-based or exact-match filtering (e.g., search bars, dropdown filters).Validator).orWhere vs. where logic, index usage). Poorly designed filters could degrade performance.spatie/laravel-query-builder)?Validator or whereIn/whereRaw)?<ModelName>Filter convention may not fit large codebases (e.g., App/Filters/UserFilter vs. App/QueryFilters/User).Product, User).where() clauses in controllers with Saring filters.// Before
$users = User::where('name', 'LIKE', '%John%')->get();
// After
$users = (new UserFilter)->apply(request()->query)->get();
where() calls).FilterMiddleware).Filter class to add global features (e.g., default scopes, query logging).SoftDeletesFilter).Filter classes in unit tests to isolate query logic.App/Filters directory and define filter classes.public function index(UserFilter $filter)
{
return $filter->apply(request()->query)->get();
}
Route::get('/users', [UserController::class, 'index'])->middleware(FilterMiddleware::class);
laraditz/saring is abandoned, filters may need rewriting.toSql()) work as usual.where() syntax in filter methods.whereRaw for complex conditions.if ($value) $this->where(...)).LIKE queries.with() for relationships.select() to limit returned fields.remember()).| Failure Scenario | Impact | Mitigation |
|---|---|---|
| SQL injection (unsanitized input) | Data corruption or exposure | Validate inputs in controllers or filters. |
| Missing database indexes | Slow queries, timeouts | Add indexes; monitor query performance. |
| Filter class errors | Broken queries, 500 errors | Unit test filters; use try-catch in controllers. |
| Package abandonment | Stranded technical debt | Fork or rewrite critical filters. |
Overuse of LIKE |
Poor performance on large datasets | Use whereIn or full-text search for complex queries. |
where() clauses to filters.User, Post).How can I help you explore Laravel packages today?