Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Eloquent Filter Laravel Package

coliving/eloquent-filter

A Laravel package for building clean, reusable Eloquent query filters. Encapsulate where clauses and request-driven filtering into dedicated filter classes, keeping controllers and models tidy and your queries composable.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. coliving/eloquent-filter is a thin query-string-to-query-builder translation layer for Laravel Eloquent. The architectural pattern it proposes — delegating filter logic out of controllers into per-model filter classes — is sound and aligns with how mature Laravel teams structure read endpoints. However, the same pattern is achievable in ~50 lines of hand-rolled scoped methods, and Laravel's own ecosystem already has well-established, actively maintained competitors (spatie/laravel-query-builder, tucker-eric/eloquentfilter). The package does not appear to introduce a capability gap that justifies adoption; it introduces a convention. Value is therefore almost entirely organizational (consistent filter naming across a team), not functional.

Integration feasibility. Low technical effort, moderate-to-high governance effort. Installation is standard Composer plus service provider registration. The real work is not wiring it up — it is the decision to make it a load-bearing convention across the codebase. That decision requires the package to be trustworthy, and at this point the trust signal is absent: zero stars, zero dependents, no observable adoption anywhere in the ecosystem. A TPM should treat the code itself as the only evidence, meaning a code review of the vendor directory is mandatory before committing. The absence of any external consumers also means no battle-testing against edge cases such as nested relationship filtering, pagination interaction, or SQL injection via filter keys.

Technical risk. High, and concentrated in three areas. First, abandonment risk: last release April 2022 with no activity since sits well outside Laravel's release cadence — Laravel ships a major version roughly annually, so this package has missed multiple framework generations. Second, security surface: a package whose entire purpose is reflecting user-supplied query strings into database queries is a class of code where injection and query-complexity abuse live. With no dependents and no external review, there is no implicit audit trail. Query-string-driven filtering also risks unbounded filter combinations producing expensive queries, and there is no evidence the package provides allowlisting or cost bounding. Third, transitive dependency risk: an unmaintained package may pin constraints that later conflict with framework or PHP upgrades, converting a routine composer update into a blocker.

Key questions. What is the concrete driver for considering this — a specific legacy codebase already using it, or a greenfield design choice? If greenfield, the answer is almost certainly "use the maintained alternative." If legacy, the question becomes "what is the cost to remove it." Has anyone reviewed the package source for how filter keys are validated and whether they are whitelisted against the model's columns? Does the package support relationship filtering, and if so, does it constrain nesting depth? What is the actual internal usage count — is this a dependency of one service or many? Is there a documented exit path that does not require rewriting every controller that touches a filter? Finally, what is the maintainer's stance — is this a personal utility repo published incidentally, or a supported internal standard?

Integration Approach

Stack fit. Presumes Laravel with Eloquent and Composer. It is framework-idiomatic and imposes no unusual runtime requirements — no extension, no separate service, no schema changes. Beyond that, fit depends on whether the team has already standardized on a competing query-builder package; running two filter conventions in one codebase is a genuine source of confusion and should be treated as a hard constraint against partial adoption.

Migration path. There is essentially nothing to migrate to — the recommendation for greenfield work is a maintained alternative (spatie/laravel-query-builder is the defensible default, with allowlisting and relationship includes built in). If this package is already in the dependency tree, the migration path is away from it and should be scoped as incremental: introduce the replacement convention on new endpoints, leave existing filtered endpoints untouched behind their current contract, and retire the package when the last consumer is ported. This is a low-risk, reversible path because the interfaces are both "query string in, builder out" — the porting work is mechanical.

Compatibility. The decisive unknown. Last release April 2022 means the package predates several Laravel majors and likely several PHP minors. A TPM should require an explicit compatibility matrix — supported Laravel versions, supported PHP versions, and a passing test suite against the current target — as a gating artifact before any integration decision. Do not accept "it installed fine" as compatibility evidence; installation success and runtime correctness under a modern framework are different questions. Also verify Laravel version pinning in composer.json is a range rather than an exact match, since a hard pin will block framework upgrades.

Sequencing. Treat this as a gate, not a sprint item. Sequence: (1) confirm the business driver and whether a maintained alternative is acceptable; (2) security and code review of the package source; (3) compatibility verification against the current Laravel/PHP target; (4) only then, a single non-critical endpoint as a pilot; (5) expand adoption behind a documented convention. If (2) or (3) fail, stop — do not proceed on the assumption that a small MIT package is inherently low-risk simply because it is small. The inverse is closer to true: small and unowned means unexamined.

Operational Impact

Maintenance. Effectively zero upstream maintenance. With no commit activity since 2022, no maintainer visibility, and no dependents generating issue pressure, the team should budget for vendor ownership: assume you will patch it yourself or fork it. That is a real, ongoing cost that must be reflected in the estimate, and it needs a named owner. A package you must maintain internally is not a free dependency; it is a small in-house library with a public origin.

Support. None available. No community to escalate to, no issue-tracker activity to search for prior art when something breaks, no Stack Overflow corpus. Debugging an obscure filtering edge case becomes an internal investigation with no external leverage. For a component on the request path of read endpoints, that support vacuum is the most underappreciated cost.

Scaling. Two distinct concerns. Query-side: user-driven filters can generate combinatorial query shapes; without allowlisting and index awareness, a hostile or merely careless client can produce pathological scans. This must be mitigated at the application layer regardless of which package is chosen. Team-side: the package's value proposition scales with team size (uniform conventions help many developers) but its risk profile also scales with team size (many developers writing filter classes against an unmaintained library multiplies exposure). Neither effect is favorable at scale here.

Failure modes. Enumerate these explicitly in the design review: (a) framework upgrade blocked by dependency constraint conflict — the highest-probability failure and the one that arrives on someone else's schedule; (b) PHP minor upgrade breaking the package with no upstream fix path, forcing an emergency vendor patch; (c) unfiltered or unvalidated query-string keys producing injection or expensive queries; (d) maintainer abandonment formalized (repo archived), converting an implicit risk into a permanent fork obligation; (e) convention drift where half the endpoints use this package and half use scoped methods, doubling the mental model for every new engineer. Note that (c) is the only failure mode with a direct security consequence — it warrants a code-level answer, not a policy-level one.

Ramp-up. Near-zero for a Laravel developer — the API surface is small and idiomatic. That is genuinely the package's strongest attribute and should be acknowledged. But low ramp-up is a convenience, not a justification: the decision hinges on the maintenance and security posture, both of which are weak, and the opportunity cost of adopting an unmaintained package when a maintained equivalent exists at comparable integration effort is difficult to defend. Recommendation: do not adopt for new work; if already present, contain it and plan a low-urgency exit.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
frankyso/ipaymu
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
diephp/sequences
users-au/socialite-provider
twidpay/twid-logger
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator