signifly / laravel-pivot-events
Trigger Eloquent model pivot events when attaching, detaching or updating.
Installs: 54 247
Dependents: 0
Suggesters: 0
Security: 0
Stars: 10
Watchers: 5
Forks: 4
Open Issues: 2
Requires
- php: ^7.4|^8.0
- illuminate/database: ^8.0|^9.0|^10.0
Requires (Dev)
- mockery/mockery: ^1.6.6
- orchestra/testbench: ^6.0|^7.0|^8.0
- phpunit/phpunit: ^8.0|^9.0|^10.0
README
The signifly/laravel-pivot-events
package allows you to easily add Eloquent model pivots events to your Laravel app.
Below is a small example of how to use it.
// Remember to add use statement use Signifly\PivotEvents\HasPivotEvents; class User { use HasPivotEvents; }
Now you would be able to listen for the newly available pivot events:
use Signifly\PivotEvents\HasPivotEvents; class User { use HasPivotEvents; protected static function boot() { static::pivotAttaching(function ($model) { // To get related changes $model->getPivotChanges(); // return Collection(['attach' => ['roles' => [1 => ['scopes' => 'orders']]]]) // To get related changes for a specific type $model->getPivotChanges('attach'); // return Collection(['roles' => [1 => ['scopes' => 'orders']]]) // You can get nested changes // values are $id => $attributes $model->getPivotChanges('attach.roles'); // return Collection([1 => ['scopes' => 'orders']]) // To get related ids for a specific type and relation $model->getPivotChangeIds('attach', 'roles'); // return Collection([1]) }); static::pivotAttached(function ($model) { // }); static::pivotDetaching(function ($model) { // }); static::pivotDetached(function ($model) { // }); static::pivotUpdating(function ($model) { // }); static::pivotUpdated(function ($model) { // }); } }
You can also use observers for the available events: pivotAttaching
, pivotAttached
, pivotDetaching
, pivotDetached
, pivotUpdating
, pivotUpdated
.
Documentation
Until further documentation is provided, please have a look at the tests.
Installation
You can install the package via composer:
$ composer require signifly/laravel-pivot-events
The package will automatically register itself.
Testing
$ composer test
Security
If you discover any security issues, please email dev@signifly.com instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.