Skip to content

Events

Aware for Laravel currently dispatches 3 events when tracking changes on models. You can listen to these events to perform additional actions.

Available events

TrackingChangesStarted

When tracking of changes starts, this event is dispatched.

Properties:

  • Illuminate\Database\Eloquent\Model $model
  • array $changes

TIP

$changes is an array representation of the Change model.

TrackingChangesCompleted

When tracking successfully completes, this event is dispatched.

Properties:

  • Illuminate\Database\Eloquent\Model $model
  • CharlGottschalk\LaravelAware\Models\Change $change

TIP

Read more about the Change model.

TrackingChangesFailed

When tracking fails due to an error, this event is dispatched.

Properties:

  • Illuminate\Database\Eloquent\Model $model
  • CharlGottschalk\LaravelAware\Entities\ChangedAttributes $changes
  • Throwable $exception

TIP

Read more the ChangedAttributes entity.

Listening to events

TIP

Read more at Laravel Events.

You can listen to these events in your application by creating for instance, a subscriber class.

php
<?php
 
namespace App\Listeners;
 
use CharlGottschalk\LaravelAware\Events\TrackingChangesStarted;
use CharlGottschalk\LaravelAware\Events\TrackingChangesCompleted;
use CharlGottschalk\LaravelAware\Events\TrackingChangesFailed;
use Illuminate\Events\Dispatcher;
 
class TrackingChangesSubscriber
{
    /**
     * Handle tracking started events.
     */
    public function handleTrackingChangesStarted(TrackingChangesStarted $event): void {
        $model = $event->model;
        $changes = $event->changes;
        // ...
    }
 
    /**
     * Handle tracking completed events.
     */
    public function handleTrackingChangesCompleted(TrackingChangesCompleted $event): void {
        $model = $event->model;
        $change = $event->change;
        
        // ...
    }
    
    /**
     * Handle tracking failed events.
     */
    public function handleTrackingChangesFailed(TrackingChangesFailed $event): void {
        $model = $event->model;
        $changes = $event->changes;
        $exception = $event->exception;
        
        // ...
    }
 
    /**
     * Register the listeners for the subscriber.
     */
    public function subscribe(Dispatcher $events): void
    {
        $events->listen(
            TrackingChangesStarted::class,
            [TrackingChangesSubscriber::class, 'handleTrackingChangesStarted']
        );
        
        $events->listen(
            TrackingChangesCompleted::class,
            [TrackingChangesSubscriber::class, 'handleTrackingChangesCompleted']
        );
        
        $events->listen(
            TrackingChangesFailed::class,
            [TrackingChangesSubscriber::class, 'handleTrackingChangesFailed']
        );
    }
}