传递给 Spatie\Activitylog\ActivityLogger::performedOn() 的参数 1 必须是 Illuminate\Database\Eloquent\Model 的实例,字符串给定

Argument 1 passed to Spatie\Activitylog\ActivityLogger::performedOn() must be an instance of Illuminate\Database\Eloquent\Model, string given

我正在使用 Spatie activity 日志包。 在我的控制器中,我试图传递模型名称,但我得到了我的问题标题。

查看下面我的模型:

class Project extends Model
{
    //
    use SoftDeletes;
    protected $softDelete = true;

    protected static $logAttibutes = ['projectname','duedate','team_id','assignee_id',
        ,'projecttype_id'];
    public static $logName = 'project';
    public function getDescriptionForEvent(string $eventName): string
    {
        return "You have {$eventName} project" ;
    }

查看列表的事件记录发生在控制器中。如下图:

public function index()
{
    //
    $projects = Project::all();

    activity()
        ->useLog('Projects')
        ->withProperties(['type'=>'view project list'])
        ->performedOn(Project::class)
        ->log('viewed the project list');

    return view('projects.index',['projects'=>$projects]);
}

在performedOn上,我也试过:

->performedOn('App/Project')

文档说

->performedOn($someContentModel)

这只是一个变量,我知道变量需要填充一些数据,但我想我很难理解该数据的格式

你能试试这个吗:

$project = new Project();
--
$activity()
->performedOn($project)

这意味着使用项目的对象作为我们也可以调用的参数,模型的实例。