Laravel Spatie活动日志包。创建新活动时如何添加causer_id和causer_type?

时间:2020-05-01 17:47:58

标签: php sql laravel eloquent

我正在使用spatie的活动日志记录模型。问题是在为服务收费模型创建新日志时如何添加causer_id(user_id)。当前,在对Service Charge执行新活动时,causer_id和causer_type为空。

This is the db field where new service Charge is created.

2 个答案:

答案 0 :(得分:1)

public function tapActivity(Activity $activity, string $eventName)
{
    $activity->causer_id = '$your variable';
}

答案 1 :(得分:0)

模型下可以添加tapActivity()

use Illuminate\Database\Eloquent\Model;
use Spatie\Activitylog\Traits\LogsActivity;
use Spatie\Activitylog\Contracts\Activity;

class NewsItem extends Model
{
    use LogsActivity;

    public function tapActivity(Activity $activity, string $eventName)
    {
        $activity->description = "activity.logs.message.{$eventName}";
    }
}

链接: https://spatie.be/docs/laravel-activitylog/v3/advanced-usage/logging-model-events#tap-activity-before-logged-from-event

activity()
   ->causedBy($userModel)
   ->performedOn($someContentModel)
   ->log('edited');
   
$lastActivity = Activity::all()->last(); //returns the last logged activity

$lastActivity->causer; //returns the model that was passed to `causedBy`;   

链接:https://spatie.be/docs/laravel-activitylog/v3/basic-usage/logging-activity#setting-a-causer

另一种方式是

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; // returns 'my special value'

链接: https://spatie.be/docs/laravel-activitylog/v3/basic-usage/logging-activity#user-content-tap-activity-before-logged