- What is vyuldashev/nova-column-filter and what does it do?
- It is a small Laravel Nova filter package that lets you filter a Nova resource index list directly by columns on the underlying database table. Instead of writing a custom filter class for every field, you register it in a resource's filters() method and configure which columns are searchable and in what order they appear. It renders in Nova's standard index filter panel and narrows the index query with a where constraint. It is a leaf dependency with no service provider, migrations, assets, queue or cache surface.
- How do I install vyuldashev/nova-column-filter in a Laravel Nova application?
- Install it with Composer using composer require vyuldashev/nova-column-filter, then add the filter to the filters() array of the Nova resource you want to narrow. Because there are no published assets, migrations or configuration files, integration is just the Composer entry plus one array item and a column reference. The deploy artifact is a lockfile change and rollback is a revert. It is worth confirming the Composer constraint resolves against your locked Nova version before merging.
- Which Laravel Nova, Laravel and PHP versions does nova-column-filter support?
- Check the package's composer.json rather than assuming, because Nova's Filter contract and stubs changed across v3, v4 and v5. With a small, low-star package maintained by a single author, it is unlikely that every Nova major version has been tracked and tested. This is the first blocking gate in any evaluation: if your Nova major is not allowed by the constraint, the package is dead on arrival. If you are not on Nova at all, the assessment ends there since Nova is a commercial per-site licensed product.
- How do I configure which columns are filterable and in what order?
- You supply the column list when you add the filter to the resource's filters() method, and the order of that array drives the order shown in the filter panel. Keep the list explicit and short so the filter exposes a curated set rather than your entire schema. Only developer-supplied column names should ever appear there, never anything derived from the request. If you need business-dimension filtering instead of raw columns, Nova's built-in SelectFilter and BooleanFilter may fit better.
- Is nova-column-filter safe against SQL injection and column enumeration?
- That depends entirely on how column names and operators reach the query, so it is a blocking source-review item before production use. Column names and operators must be developer-supplied via an allowlist, never taken from request input, otherwise you have an injection and column-enumeration surface in a PII-touching admin panel. Read the filter class and confirm the where clause is built from your configured array only. A mandatory allowlist and a code review are the right mitigations, and vendoring the class makes that review permanent.
- Does nova-column-filter respect Nova's indexQuery and authorization pipeline?
- Do not assume it does; verify it explicitly with a multi-tenant test case. The appended where constraint has to compose with Nova's indexQuery and the resource's authorization scoping so a user cannot filter their way into another tenant's records. Because the filter applies at query level rather than in PHP, a missing scope is easy to miss in casual testing. Test with two accounts and two tenants, and confirm the filter cannot widen the result set.
- What operators and column types does nova-column-filter support?
- Expect a deliberately narrow surface: typically an equality or partial-match style constraint on a chosen column rather than a full operator set like in, between or greater-than. If you need range or multi-value filtering, confirm support before committing. Also consider that raw column filtering exposes database semantics such as nullability, enums, JSON paths and soft deletes rather than the business dimensions stakeholders usually ask for. That semantic drift is a real risk, not a cosmetic one.
- Why does my Nova column filter still render but stop filtering after an upgrade?
- This is the silent no-op failure mode: after a Nova major upgrade the filter can still appear in the panel while no longer appending an effective query constraint, so admins act on unfiltered data believing it is filtered. Nova's Filter contract and stubs shifted across v3, v4 and v5, and a low-star, single-maintainer package may not have tracked those changes. The mitigation is a standing smoke test that asserts the index query actually narrows when the filter is applied. Treat that test as a guardrail on every Nova upgrade, not a one-off check.
- Should I use nova-column-filter or Nova's built-in SelectFilter and BooleanFilter?
- If the real requirement is filtering by a curated set of business dimensions such as status, plan or team, Nova's built-in SelectFilter and BooleanFilter already cover it and this dependency buys you nothing. The package earns its place on back-office index screens where operators need ad-hoc narrowing of the long tail: region, created-at buckets, partial email or phone lookups. Ask stakeholders which of the two they actually mean before adding a dependency. The honest answer is often the built-in filter plus one custom class.
- Is nova-column-filter still maintained, and can I vendor it instead of depending on Composer?
- It has very few stars, zero dependents and a single maintainer with no disclosure process, so supply-chain and abandonment risk is high likelihood and medium impact, and every Nova upgrade is yours to absorb. The recommended end state is to vendor the class into app/Nova/Filters/ under your own namespace, confirm the license permits it, and drop the Composer dependency. That makes adoption reversible and removes the upgrade surprise entirely. If you keep the dependency, pin it and treat it as a timeboxed spike rather than a platform bet.