# Tracking Model Events
Tracking event models is possible via an internal observer with a few tricks. You can provide detailed options when configurting or registering an observable model.
# Observable options
By default, only created
, updated
and restored
events are observed. When new keys are defined, they're automatically included.
Events::observe([
\App\Models\User::class => [
'deleted' => 'User Deleted',
]
]);
Other options:
Option | Description | Type |
---|---|---|
$all | Observe all currently known events | boolean |
$only | Observe only select events | string[] |
$except | Observe all currently known events except select events | string[] |
# Auto tracking model events
// connfig\event-tracking.php
...
'auto_tracking' => [
...
'observe' => [
\App\Models\User::class,
],
],
Registered model events may be mapped with different names or properties
...
'auto_tracking' => [
...
'observe' => [
\App\Models\User::class => [
'created' => [
'name' => 'User: Registered',
'properties' => 'toArray', // property or method name
],
'deleted' => 'User: Deactivated',
],
],
],
# Manually observe model events
Events::observe(\App\Models\User::class);
// or
Events::observe(\App\Models\User::class, ...);
// or
Events::observe([
\App\Models\User::class,
...
]);
// or
Events::observe([
\App\Models\User::class => [
...
]
]);
# Using TrackableModel
Your models that implement TrackableModel
can redirect provide event names and properties.
Note that models that implement TrackableModel are not automatically tracked.
namespace App\Events;
use MOIREI\EventTracking\Contracts\TrackableModel;
use Illuminate\Database\Eloquent\Model;
class User extends Model implements TrackableEvent
{
...
}