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 Matrix Bundle Laravel Package

yokai/many-to-many-matrix-bundle

Symfony bundle that displays many-to-many relations as an editable matrix grid, letting admins toggle associations in bulk from a single screen. Configure entities, fields, and labels to manage complex mappings without custom forms. Ideal for admin panels.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Build vs. buy for admin "matrix" assignment UIs. A recurring pattern in B2B back-offices: role × permission, product × attribute, user × team, course × student. This bundle is a single-purpose Symfony form type that renders a Doctrine ManyToMany relation as a checkbox grid and syncs the collection back on submit. It is a data point for scoping that work — the feature is roughly "one custom form type plus a small JS/template layer," which lands in days, not sprints.
  • Roadmap prioritization of admin tooling. If matrix-style assignment screens show up in three or more customer requests, that argues for a reusable internal form-type component (shared across entities) rather than per-screen custom code. This package is a useful specification artifact for that component: it defines the expected UX (rows = owning side, columns = inverse side, checked = association exists).
  • Framework-strategy decisions. The prompt frames this as a "Laravel/PHP package"; the reality is a Symfony bundle bound to Doctrine ORM and the Symfony Form component. For a Laravel shop this is not a candidate at all — it's a signal to build the equivalent with Eloquent belongsToMany and a Blade/Livewire grid. Treat the assessment as a data point on the problem, not the artifact.
  • Buy-vs-fork analysis for stale dependencies. With 9 stars, 0 dependents, and a last release of 2016-05-31, this is effectively an abandoned artifact from the Symfony 2/3 and PHP 5.5–7.0 era. Its value to the roadmap is as a fork-and-port reference, not as a supplier dependency.
  • Use cases it maps to: internal admin CRUD, data-migration/import tooling where an operator needs to eyeball association completeness, and back-office screens where a grid beats N multi-selects.

When to Consider This Package

Consider it (rarely, and as reference material) when:

  • You are on a legacy Symfony 2.x/3.x + Doctrine ORM + Symfony Forms stack that still supports this bundle's API, and the matrix is a pure pivot with no extra columns on the join (no assignedAt, weight, isPrimary).
  • The UI is a genuinely two-dimensional, low-cardinality axis pair — e.g. 12 roles × 40 permissions. Beyond a few hundred cells, a checkbox grid stops being usable regardless of implementation.
  • You need a working example of how to hook a custom FormType into Doctrine's collection sync (by_reference => false, adder/remover conventions) rather than a maintained library.

Look elsewhere — or build in-house — when:

  • The stack is Laravel. This is a Symfony bundle; there is no port and no Eloquent equivalent here.
  • You are on modern Symfony (5/6/7), Doctrine 3, or PHP 8.x. A 2016 bundle will not survive the Form component's getBlockPrefix/configureOptions migration, Twig API changes, or Doctrine's collection-handling updates without a fork.
  • You need the join table to carry attributes. At that point the relation should be modeled as an explicit entity with two ManyToOne associations, and the matrix becomes a custom form over that entity — the package's core assumption breaks.
  • Security, maintenance, or SLAs matter. No releases in ~9 years, no dependents, no maintainer activity. Adopting it means accepting a permanent fork.
  • You need API/headless delivery (JSON:API, GraphQL, Livewire/Inertia) — this is a server-rendered form widget.

How to Pitch It (Stakeholders)

To executives (one paragraph): We evaluated a small open-source package that renders many-to-many associations as a checkbox matrix in admin screens. It is not a viable dependency — it's a Symfony-only bundle, last released in 2016, with no adoption and no maintenance. It does, however, validate that this class of admin screen is a component, not a project: the equivalent for our stack is a few days of work. Recommendation: do not adopt; budget the internal component if the matrix pattern appears in the roadmap three or more times. Net cost of doing nothing is per-screen custom code; net risk of adopting is an unmaintained fork with no upstream security response.

To engineering (one paragraph): yokai/many-to-many-matrix-bundle is a Symfony form type that maps a ManyToMany to a checkbox grid and syncs the owning collection on submit. It is a useful 200-line reference for the by_reference => false + adder/remover pattern and for how to shape the grid template — read it, don't require it. Build our own: a reusable MatrixType over Eloquent belongsToMany (or Doctrine, if that's the stack), parameterized by row/column query, with explicit support for pivot-attribute entities and pagination/virtualized columns for large cardinalities. Ship it as a shared UI package so every future admin matrix is configuration, not code.

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.
mehedimi/laravel-amp-mail
happones/laravel-vue-i18n-generator
jwerd/inertia-table
siberfx/flysystem-wasabi
hollyit/token-replace
ippanelcom/laravel-sdk
adachsoft/changelog-linter
adachsoft/collection
payerurl/telegrambot-crypto-payment-instant-payout
dskripchenko/laravel-hybrid-search
riorizkyrainey/lara-ced
mehedimi/static-vel
zharp/zharp
nonsapiens/bigquery-model-sync
lgu-bayambang-ict-office/lgu-laravel-development-standards
andydefer/laravel-support
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel