Skip to content
This repository has been archived by the owner on Sep 22, 2024. It is now read-only.

Easily add Eloquent model pivot events to your Laravel app

License

Notifications You must be signed in to change notification settings

signifly/laravel-pivot-events

Repository files navigation

Easily add Eloquent model pivot events to your Laravel app

Latest Version on Packagist Build Status StyleCI Quality Score Total Downloads

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 [email protected] instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.