【问题标题】:Argument 1 passed to Spatie\Activitylog\ActivityLogger::performedOn() must be an instance of Illuminate\Database\Eloquent\Model, string given传递给 Spatie\Activitylog\ActivityLogger::performedOn() 的参数 1 必须是 Illuminate\Database\Eloquent\Model 的实例,给定字符串
【发布时间】:2020-11-17 15:41:23
【问题描述】:

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

在下面查看我的模型:

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('App/Project')

文档说

->performedOn($someContentModel)

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

【问题讨论】:

    标签: laravel eloquent activitylog


    【解决方案1】:

    你可以试试这个吗:

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

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

    【讨论】:

      猜你喜欢
      • 2021-10-25
      • 1970-01-01
      • 1970-01-01
      • 2020-11-26
      • 2019-03-04
      • 2020-02-06
      • 2018-03-22
      • 2018-05-28
      • 2020-10-29
      相关资源
      最近更新 更多