##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')
##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;