armincms/many-to-many
A Laravel package that extends Eloquent many-to-many relationships with helpers for attaching, detaching, and managing related models through pivot tables. It aims to simplify common relationship workflows and offer a cleaner API for complex many-to-many handling.
BelongsToMany field is the entire business case, and that delta must be demonstrated, not assumed.Consider it when:
BelongsToMany field does not cover — richer pivot editing, inline creation of related records, a searchable transfer-list UI, or polymorphic support.Run a time-boxed spike first (half-day to one day): verify install health, the Nova/Laravel/PHP constraints in composer.json, the actual delta versus native, pivot-field persistence (fields declared in the UI but not whitelisted in withPivot() fail silently), server-side search and pagination at production-scale record counts, test coverage, and whether compiled assets ship in dist/ or require an internal npm build. Document the fallback before promoting it anywhere.
Look elsewhere when:
Default position: native Nova BelongsToMany in every resource unless the spike proves a specific, valuable gap. Rollback is a one-line field swap, which is what makes this a cheap experiment to authorize.
Decision: conditional pilot only where a confirmed capability gap exists.
Executives: "This is a low-cost, low-blast-radius accelerator for internal admin screens, not a strategic dependency. It may save custom UI effort for many-to-many editing with pivot data, and it touches only the back-office layer — no schema changes, no domain model changes, no impact on public APIs or customer-facing surfaces. Adoption is thin and the last release is stale, so it carries abandonment risk. That risk is mitigated by MIT licensing and by the fact that rollback is a one-line field swap. I'm recommending a short, bounded evaluation with a defined fallback, not a commitment."
Engineering: "Evaluate as a pinned Nova field on one low-risk resource. Confirm Nova/Laravel/PHP compatibility from composer.json rather than inferring from the release date; read the field class source; verify pivot fields are declared in withPivot(); and check whether compiled dist/ assets are shipped. Test three axes independently — Nova major version, Laravel/PHP version, and Vue 2 vs Vue 3 toolchain — and check for component-name collisions against every Nova field package already installed. Validate the asset publish step in a clean CI container, not a warm local machine; the classic silent-production-break mode is a published bundle that renders a blank field after a Nova minor upgrade. Assign a named owner for Nova-upgrade triage and record the fork point before any promotion. Note the worst case: a hard Composer constraint can block a Nova upgrade across the entire admin panel, not just the resources using this field."
The ask: roughly one engineer-day for the spike plus a one-sprint pilot on a single internal resource, with a pre-agreed exit criterion — ship if the spike confirms a real gap over native BelongsToMany and survives a Nova-upgrade dry run; otherwise keep native and close the ticket.
How can I help you explore Laravel packages today?