devaction-labs/filterable-package
A Laravel package for adding reusable, query-string-driven filtering to Eloquent models. Define the filters a model allows once, then let incoming requests narrow results cleanly, keeping controllers lean, queries readable, and filtering behavior easy to test.
Architecture fit. devaction-labs/filterable-package is a Laravel-side concern: it occupies the request-to-query boundary, most likely exposing a trait or interface applied to Eloquent models plus a set of filter classes resolved through the service container. That is the right layer for it — it sits below controllers and above the query builder, so it does not constrain our HTTP or domain layers and can be adopted per-model rather than per-application. Fit is good for read-heavy index endpoints that currently hand-roll $request->has(...) conditionals in controllers. Fit is poor where query shaping is already centralised in dedicated query objects or repositories, since we would end up with two competing abstractions.
Integration feasibility. Standard Composer install with Laravel package auto-discovery; expect a publishable config file and no database migrations. No host application code changes are required to install, only opt-in trait usage on selected models. This is a low-ceremony, reversible integration.
Technical risk. v2.4.0 contains no feature work, no deprecations, and no documented breaking changes — the changelog is two Dependabot commits bumping guzzlehttp/guzzle from 7.14.2 → 7.15.1 → 7.15.2. The risk profile of the release itself is therefore minimal: patch-level transitive dependency movement, no public API surface change. Two residual risks remain and both predate this release:
Key questions.
devaction-labs an internal team or a third party with a support commitment?Stack fit. Assumes a conventional Laravel application (service provider, facade-free container resolution, Eloquent). It will slot in without touching routing, middleware, or the persistence layer. Any deviation from that — Lumen, a non-Eloquent read model, or a CQRS-style query bus — reduces the value proposition substantially.
Migration path. Adopt incrementally rather than wholesale. Pick one high-traffic index endpoint, express its existing filters as package filter classes, and keep the existing controller code path behind a feature flag for one release cycle so behaviour can be diffed against production traffic. Do not attempt to convert all models at once; the failure mode of a partial migration is inconsistent filtering semantics across endpoints, which is a correctness issue, not a cosmetic one.
Compatibility. Verify the supported-version matrix against our current Laravel and PHP baselines before committing. Because 2.4.0 only moved Guzzle, compatibility with 2.3.0 is expected to be identical — but that is an expectation, not a verified fact, and should be confirmed by running our own test suite against both tags rather than trusting the changelog.
Sequencing.
Maintenance. Low and largely passive. The package is a thin abstraction and this release requires no application-side action beyond a routine composer update. The real maintenance cost is governance: someone must own the filtering convention and review which filters are permitted, otherwise the filter set accretes organically and becomes an undocumented public API.
Support. Uncertain. devaction-labs is not a widely recognised vendor, and the changelog shows automated dependency management rather than active feature development. Assume no SLA and plan for the possibility that we are the maintainers of last resort. Mitigate by keeping our filter definitions in application code (so they are portable) rather than deep in package-specific configuration, and by budgeting for a fork or vendored patch if the project stalls.
Scaling. Filtering is applied at query-construction time, so cost scales with the underlying query, not the package. The scaling risks are the familiar ones: unbounded filter combinations producing unindexed WHERE clauses, and N+1 behaviour if filters traverse relations. Establish a policy that every filterable column is indexed and that relation filters are constrained to eager-loaded paths. Neither risk is introduced or resolved by 2.4.0.
Failure modes.
Ramp-up. A developer familiar with Laravel can be productive in under a day: the mental model is small and the integration surface is one trait plus a set of small classes. The cost is not learning the package, it is learning our filtering convention — which we should write down as part of the pilot, not afterwards.
Assessment of v2.4.0 specifically. Non-eventful. Two automated dependency bumps, no API change, no deprecation, no migration action. It does not change the adoption calculus in either direction; it does slightly reinforce the observation that this project's release signal is weak and its dependency posture is worth a direct question before we commit.
How can I help you explore Laravel packages today?