<?php

namespace Kylin\Activity\Traits;

use Illuminate\Database\Eloquent\Relations\MorphMany;
use Kylin\Activity\ActivitylogServiceProvider;
use Kylin\Activity\Models\Activity;

/**
 * 操作者关联 Trait
 *
 * 为模型添加"作为操作者"的活动日志关联。
 * 使用此 Trait 的模型可通过 actions() 获取其触发的所有活动日志。
 */
trait CausesActivity
{
    /** @return MorphMany<Activity, $this> */
    public function actions(): MorphMany
    {
        return $this->morphMany(
            ActivitylogServiceProvider::determineActivityModel(),
            'causer'
        );
    }
}
