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

Many To Many Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Build-vs-buy for admin tooling. This is a pre-built Laravel Nova field for editing many-to-many relationships with pivot data — a scoping decision for internal back-office screens, not a product bet. The relevant question is "does this field save us a ticket?" rather than "does this change our product?"
  • Roadmap prioritization. Best suited to admin-only workflows: tagging, categories, team membership, role/permission assignment, segments, and product/content associations. In those cases a small field-level accelerator converts directly into delivered scope on a sprint board.
  • Feature scoping and estimates. If the requirement is "let admins attach/detach related records and edit simple pivot data," this package can shrink a ticket's estimate meaningfully. If the requirement includes approvals, audit trails, bulk operations, complex validation, import/export, or public-facing UX, treat it as insufficient and scope a custom solution instead.
  • Data-model decisions. It assumes conventional pivot-table modeling. Morph relationships, pivot columns, and large option sets must be validated against your schema before committing — the package's delta over Nova's native BelongsToMany field is the entire business case, and that delta must be demonstrated, not assumed.
  • Delivery and dependency risk. 25 stars, 0 dependents, no release since February 2023, single maintainer, no commercial backing. That is a tactical accelerator signal, not a strategic platform signal. Any adoption should be reversible, pinned, and time-boxed.
  • Resourcing decision. Adopting it means assigning an internal owner for Nova-upgrade triage and budgeting for a potential fork. That ongoing cost belongs in the estimate up front, not discovered at the next Nova major upgrade.

When to Consider This Package

Consider it when:

  • The product already runs Laravel Nova with a paid license, and you are on a Nova 4-era stack the package plausibly matches.
  • The need is internal, admin-side relationship management — not customer-facing UX.
  • Pivot requirements are simple (a few straightforward columns such as order, weight, or assigned-at).
  • The team is comfortable pinning a small MIT package, owning a fork, and treating it as internal code from day one.
  • A confirmed capability gap exists that Nova's native 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:

  • The product does not use Nova — the package is inert without it, which also explains the thin community signal.
  • Workflows require audit trails, granular permissions, bulk editing, approvals, or import/export. Use Nova Actions plus plain Eloquent instead.
  • Vendor-supported longevity is required, or a Nova/Laravel major upgrade is imminent. Nova 5 compatibility is unknown and is the single largest technical risk.
  • Related-record sets are very large and the field lacks server-side search — front-end degradation, not database cost, is the failure point.

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.

How to Pitch It (Stakeholders)

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.

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.
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle
glavweb/extra-bundle
glavweb/api-bundle
glavweb/admin-bundle
adachsoft/api-version-bundle
elsayed85/laravel-api-exceptions
ouhssini/laravel-demo-mode
daworks/ncloud-outbound-mailer-driver
gp247/cms
ignibyte/aic-gates
nexa-merchant/blog
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
cgv/localized-resource