##Description
This is the most basic way to log activity:
activity()->log('Look mum, I logged something');
You can retrieve the activity using the Spatie\Activitylog\Models\Activity
model.
$lastActivity = Activity::all()->last();
$lastActivity->description;
##Setting a subject
You can specify on which object the activity is performed by using performedOn()
:
activity()
->performedOn($someContentModel)
->log('edited');
$lastActivity = Activity::all()->last();
$lastActivity->subject;
The performedOn()
-function has a shorter alias name: on()
##Setting a causer
You can set who or what caused the activity by using causedBy()
:
activity()
->causedBy($userModel)
->performedOn($someContentModel)
->log('edited');
$lastActivity = Activity::all()->last();
$lastActivity->causer;
The causedBy()
-function has a shorter alias named: by()
If you're not using causedBy()
the package will automatically use the logged in user.
If you don't want to associate a model as causer of activity, you can use causedByAnonymous()
(or the shorter alias: byAnonymous()
).
##Setting custom properties
You can add any property you want to an activity by using withProperties()
activity()
->causedBy($userModel)
->performedOn($someContentModel)
->withProperties(['key' => 'value'])
->log('edited');
$lastActivity = Activity::all()->last();
$lastActivity->getExtraProperty('key');
$lastActivity->where('properties->key', 'value')->get();
##Setting custom created date
You can set a custom activity created_at
date time by using createdAt()
activity()
->causedBy($userModel)
->performedOn($someContentModel)
->createdAt(now()->subDays(10))
->log('created');
##Setting custom event
You can set a custom activity event
by using event()
activity()
->causedBy($userModel)
->performedOn($someContentModel)
->event('verified')
->log('The user has verified the content model.');
##Tap Activity before logged
You can use the tap()
method to fill properties and add custom fields before the activity is saved.
use Spatie\Activitylog\Contracts\Activity;
activity()
->causedBy($userModel)
->performedOn($someContentModel)
->tap(function(Activity $activity) {
$activity->my_custom_field = 'my special value';
})
->log('edited');
$lastActivity = Activity::all()->last();
$lastActivity->my_custom_field;