spiral/filters
Spiral Filters provides a simple way to define, validate, and apply request-driven filters to query builders in Spiral apps. Build reusable filter sets, map input to conditions, and keep controllers thin while supporting pagination, sorting, and clean APIs.
composer require spiral/filters.Spiral\Filters\Filter and defining validation rules in the defineRules() method.Filterable trait on your query builder or collection to apply filters: (new Filterable($query))->apply($filterInstance).FilterFactory (or make() helper in Spiral apps), passing request data.Example:
class UserFilter extends Filter
{
protected function defineRules(): array
{
return [
'status' => ['string', Rule::in(['active', 'inactive'])],
'role' => ['string', Rule::in(['admin', 'user'])],
];
}
}
Pipeline::add() for layered criteria (e.g., UserFilter → DateRangeFilter).Filter::onlyWhen($condition) to apply filters only when contextually relevant (e.g., admin-only fields).apply() to modify QueryBuilder).null → 'active', or cast to enum).make() or InjectorInterface).defineRules() handles validation; defineMap() handles input → property mapping. Don’t conflate them—validation without mapping loses data intent.required() or custom rules if absence is an error.validateValue() or register custom Rule classes for domain-specific checks (e.g., UniqueEmail).How can I help you explore Laravel packages today?