PHPackages                             plank/before-and-after-model-events - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. plank/before-and-after-model-events

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

plank/before-and-after-model-events
===================================

Add before and after events to each existing Laravel Model event.

v12.0.0(9mo ago)12.3k↑71.4%[3 PRs](https://github.com/plank/before-and-after-model-events/pulls)1MITPHPPHP ^8.2CI passing

Since Aug 2Pushed 2mo agoCompare

[ Source](https://github.com/plank/before-and-after-model-events)[ Packagist](https://packagist.org/packages/plank/before-and-after-model-events)[ Docs](https://github.com/plank/before-and-after-model-events)[ GitHub Sponsors](https://github.com/Plank)[ RSS](/packages/plank-before-and-after-model-events/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (3)Dependencies (11)Versions (11)Used By (1)

[![](art/before-and-after-events.png)](https://plank.co)

[![PHP Version Support](https://camo.githubusercontent.com/829d19943f6bcbaed04ffcf4c218f2dd77c84ad048b7fa61b43654a3c2574a89/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f706c616e6b2f6265666f72652d616e642d61667465722d6d6f64656c2d6576656e74733f636f6c6f723d253233666165333730266c6162656c3d706870266c6f676f3d706870266c6f676f436f6c6f723d253233666666)](https://packagist.org/packages/plank/before-and-after-model-events)[![PHP Version Support](https://camo.githubusercontent.com/e9e2cd80e3c012d4645902213287d933a72fd2477739d8193f8205cb6c070a16/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c61726176656c2d31302e782c25323031312e782c25323031322e782d2532333433643339393f636f6c6f723d253233663165646539266c6f676f3d6c61726176656c266c6f676f436f6c6f723d253233666666666666)](https://laravel.com/docs/12.x/releases#support-policy)[![GitHub Workflow Status](https://camo.githubusercontent.com/97fb30d3b4d00b71c3f9bb42e2270e5b4b3c8dbe1d1638ddf02304318c9cc6d0/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f706c616e6b2f6265666f72652d616e642d61667465722d6d6f64656c2d6576656e74732f72756e2d74657374732e796d6c3f6272616e63683d6d61696e2626636f6c6f723d253233626663396264266c6162656c3d72756e2d7465737473266c6f676f3d676974687562266c6f676f436f6c6f723d253233666666)](https://github.com/plank/before-and-after-model-events/actions?query=workflow%3Arun-tests)

Before and After Model Events
=============================

[](#before-and-after-model-events)

This package adds **before** and **after** events for every Laravel Eloquent model event, giving you complete control over your model's lifecycle. It works with all standard Laravel model events (`creating`, `created`, `updating`, `updated`, `deleting`, `deleted`, etc.) and any custom events you define.

Features
--------

[](#features)

- 🚀 **Zero Configuration** - Just add the trait and start using before/after events
- 🎯 **Works with ALL Events** - Standard Laravel events AND custom events
- 🔒 **Event Prevention** - Before events can prevent the main event from firing
- 🏗️ **Clean API** - Static methods for registering event listeners with full IDE support
- 🧪 **Fully Tested** - Comprehensive test suite with 22 tests and 68 assertions
- ⚡ **Performance Focused** - Minimal overhead with dynamic event registration
- 🔧 **Laravel Integration** - Works seamlessly with existing Laravel event systems

Event Flow
----------

[](#event-flow)

When working with model events, this package ensures the following execution order:

**For standard Laravel events** (like saving a model):

1. `beforeCreating` → `creating` → `afterCreating`
2. `beforeSaving` → `saving` → `afterSaving`
3. `beforeCreated` → `created` → `afterCreated`
4. `beforeSaved` → `saved` → `afterSaved`

**For custom events** (like publishing a post):

1. `beforePublishing` → `publishing` → `afterPublishing`

Installation
------------

[](#installation)

You can install the package via composer:

```
composer require plank/before-and-after-model-events
```

Usage
-----

[](#usage)

Simply add the `BeforeAndAfterEvents` trait to any Eloquent model:

```
