blendbyte/nova-attach-many
blendbyte/nova-attach-many provides a Laravel Nova field for managing many-to-many relationships: search and select multiple related records from a modal, attach or detach them, and keep resource forms clean and efficient. Ideal for BelongsToMany fields in Nova.
Build vs. buy for admin relationship UIs. This package answers a recurring PM question directly: do we spend sprint capacity building a custom Nova field for attaching related records, or adopt a maintained MIT package for roughly a half-day of integration? For internal back-office panels, the buy side usually wins — the picker mechanics (search, selection, sync feedback) are undifferentiated, while the genuinely valuable work is defining who may attach what and under what constraints.
Roadmap sequencing for relationship-management surfaces. Tags, roles, categories, user-to-team membership, line items — every one of these is a many-to-many surface. This package moves that roadmap item from "multi-week custom build" to "half-day wiring job," letting the team spend the recovered time on validation rules, policy design, and search scoping. That is a schedule decision as much as a technical one.
Permission and data-governance modeling. Nova policy support (attach/detach on the related resource) and validation mean the product question "who can attach what, under what eligibility rules" is enforceable at the UI layer from day one. Decide this explicitly before integration rather than retrofitting restrictions after operators have built habits.
Nova 5 migration gating. The package is a fork explicitly maintained for Nova 5. If your upgrade plan hinges on preserving a searchable BelongsToMany attach experience, this determines whether the Nova 5 move is unblocked or requires a custom stopgap.
Operator trust in search results. The 2.0.1 patch fixes how relatable query filter methods are resolved — the plumbing behind which records appear as attachable candidates. This is a correctness fix, not polish: it governs whether "the record isn't in the list" reliably means "it isn't attachable." Any tenant-, team-, or role-scoped attach flow should be re-verified against 2.0.1 before rollout, and adoption should be pinned to ^2.0.1, never 2.0.0.
Support-load and operational cost. Search plus sync notifications directly reduce the "I attached the wrong thing" and "I can't find the record" tickets that consume ops time. This is the easiest line of the ROI case to defend because it is measurable.
Dependency portfolio risk acceptance. Twelve stars, zero dependents, and a fork lineage mean adoption is a conscious decision to carry concentration risk. The 2.0.1 release adds a second outside contributor and demonstrates an active patch cadence on the Nova 5 fork — a marginal positive for continuity, not a change to the risk classification. Treat it as code you may inherit, not a service you subscribe to.
Consider adoption when:
^2.0.1, keeping a smoke test on the attach flow, and monitoring the repo. MIT licensing makes vendoring or forking a viable fallback.Look elsewhere when:
dillingham/nova-attach-many; mixing both causes namespace and asset-publishing collisions.For executives: This is a small, MIT-licensed UI component that removes a build item from the roadmap. Instead of engineering a bespoke "attach related records" screen for our Laravel Nova admin panel, we integrate a maintained package in roughly half a day and redirect the saved sprint time to permission rules and validation — the work that actually governs who can change what. The trade-off is concentration risk: low adoption, fork lineage, no commercial support. We mitigate by pinning the version, keeping an automated smoke test around the attach flow, and accepting that we may inherit the code if upstream maintenance stops. Recommended for internal admin tooling only, not customer-facing surfaces.
For engineering: A Nova 5 field for managing BelongsToMany relationships inside a resource form — searchable candidate list, policy-gated attach/detach, sync notifications. Install at ^2.0.1 (2.0.0 carries a filter-resolution bug that can silently change candidate lists). Confirm the fork namespace (Blendbyte\NovaAttachMany\AttachMany) and fluent methods in src/AttachMany.php before writing resource code — inherited conventions drift. Prefer constraining the relationship (wherePivot, scoped relation) over patching the field. Keep showCounts() for large relationships; showPreview() can N+1. Validation lives on the related resource, not in the field. Budget for one integration smoke test and a Dusk or feature test hitting the attach endpoint so a Nova minor bump fails loudly.
For operations: Admins get a searchable attach interface on the detail page with confirmation feedback on every attach and detach. Permission rules are enforced by existing Nova policies. Known limitation to communicate up front: pivot attributes are not editable here — if a relationship needs extra data per link, it uses a different surface.
How can I help you explore Laravel packages today?