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

Eventually Laravel Package

altek/eventually

Eventually is a Laravel event sourcing package for modeling applications around domain events. It offers aggregates, event storage, projectors, and reactors, giving you an expressive way to persist state changes as an append-only event log.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Audit and compliance trails for relationship changes. Most regulatory or enterprise audit requirements ("who granted this role, when") apply to many-to-many links as much as to primary records. Native Laravel fires events for models but not for pivot attach/detach/sync/updateExistingPivot, so this package is the difference between a clean audit story and a pile of ad-hoc logging in controllers.
  • Event-driven side effects on membership changes. Team joins/leaves, project-tag changes, product-category reassignments, and permission grants are all pivot mutations. If our product roadmap includes notifications, webhooks, onboarding flows, or access-provisioning triggers on those changes, this is the plumbing that makes them reliable instead of scattered.
  • Cache invalidation and denormalized counters. Any roadmap item that depends on accurate aggregates (member counts, tag usage, "shared with" lists) needs a single authoritative hook when relationships change. This package turns that into a first-class event rather than a per-feature chore.
  • Architecture direction: domain events vs service-layer orchestration. A concrete build-vs-buy decision — do we standardize on model-layer events (with this filling the pivot gap), or push all side effects into application services? Choosing the former shrinks boilerplate across dozens of relationships; choosing the latter is more testable but slower to build. This package makes the event-layer option materially cheaper.
  • Build vs buy vs fork. The surface area is tiny ("the missing many-to-many Eloquent events" is a narrow gap, not a framework). That makes internal reimplementation or a vendored fork a legitimate third option — a decision worth making explicitly rather than defaulting to composer require.
  • Standardization across a many-to-many-heavy schema. In apps with 10+ pivot relationships, consistency of event semantics (payload shape, transaction timing, sync vs attach behavior) is a product-quality issue, not just a code-style one.

When to Consider This Package

Consider it when:

  • You have multiple many-to-many relationships whose changes must trigger behavior (audit, notifications, webhooks, cache busting, counters) and you want one consistent mechanism instead of per-relationship observers.
  • Your team already thinks in Eloquent events and observers and wants parity for pivots rather than introducing a parallel service-layer pattern.
  • The needs are cross-cutting and repetitive — the value scales with the number of pivots, not the complexity of any one.
  • You are prepared to pin the version, review the source, and own a fork if upstream goes quiet.

Look elsewhere (or build in-house) when:

  • The need is one-off. Laravel's custom pivot models via BelongsToMany::using() already extend Model and can fire/handle events — a 20-line internal solution may beat a dependency.
  • You need full audit history or event sourcing. Use a mature activity-log/audit package (e.g. spatie/laravel-activitylog, owen-it/laravel-auditing) rather than deriving history from pivot events.
  • Adoption signals matter to your risk model. Zero stars and zero dependents is not disqualifying for a small utility, but it means no community regression coverage — assume you are the maintainer.
  • Laravel version compatibility is uncertain. Pivot event wiring touches Eloquent internals that shift between major versions; verify support against your current and next LTS before committing.
  • Throughput is tight (Octane, high-write queues) and you cannot absorb any additional per-mutation overhead without measurement.
  • Regulated/procurement-constrained context where an unmaintained transitive dependency needs a formal exception.

How to Pitch It (Stakeholders)

For executives: Laravel, our PHP framework, tracks changes to records but is blind to changes in relationships between records — team membership, role assignments, tagging. That gap forces us to hand-write logging and notification code for each relationship, which is where audit gaps and missed notifications come from. This is a small, narrowly scoped library that closes exactly that gap. The cost is a single lightweight dependency; the risk is that it is not widely adopted, so we should treat it as adopt-and-own: pin it, review it, and be ready to fork it into our codebase (a few hundred lines) if it goes unmaintained. Net: faster delivery of audit and notification features, with bounded and easily reversed risk.

For engineering: It gives us model-level events for attach/detach/sync/updateExistingPivot, so pivot side effects stop living in controllers and start living in observers alongside everything else. Trade-offs to validate before adoption: how it hooks into Eloquent internals, behavior inside transactions and on bulk sync, event payload ergonomics (does it give us both sides of the relationship?), test coverage, and Laravel-version support. Fallback plan is a custom Pivot model per relationship, or an in-house fork behind our own interface so the dependency is swappable. Recommend a time-boxed spike on one real relationship (e.g. user-role) to confirm semantics and query cost before standardizing.

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.
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console