首页 > 解决方案 > 获取特定模型实例的活动日志(使用 spatie/laravel-activitylog)

问题描述

我正在使用spatie/laravel activityLog 包。

activitylog 插入代码是

 $user = Auth::user();
 $inventory = Inventory::where('id','=','1')->first();
 $properties = ['action' => 'view'];

 activity()
     ->performedOn($inventory)
     ->causedBy($user)
     ->withProperties($properties)
     ->log('add inventory')
     ->subject('test subject');

如何获取特定模型实例的活动日志?

下面是我的桌子

在此处输入图像描述

标签: phpmysqllaravel-5

解决方案


这工作正常

1) 回答

 $inventory = new Inventory();
 Activity::where('subject_type',get_class($inventory))->get();

2) 回答

 $inventory = new Inventory();
 Activity::forSubject($inventory)->get();

如果您尝试第二个答案,那么

您刚刚在此路径vendor/spatie/laravel-activitylog/src/models/Activity.php中编辑了以下函数

public function scopeForSubject(Builder $query, Model $subject): Builder
    {
        return $query
            ->where('subject_type', $subject->getMorphClass())
            ->orWhere('subject_id', $subject->getKey());
    }

推荐阅读