Laravel 多态关系与自定义键

在我的项目中,我正在处理多个数据库和一个中央数据库。我正在使用 spatie 的活动日志包将控制面板中完成的操作记录到所有这些数据库中。


我在每个数据库(中央数据库除外)中都有带有自动递增主键的表项,以及另一个名为 hash 的索引,它是一种 uuid。哈希总是唯一的。


现在,当我想记录操作时,我会遇到问题,因为它会保存 Item 的 ID,所以......在我的活动表中,我将获得两个 subject_id = 1 的记录,而一个活动发生在一个数据库和另一个数据库上的 Item在另一个,依此类推。


如何在不更改相关模型上的 $primaryKey 的情况下更改集合变形以使用我的 uuid 列而不是 id?


物品型号关系:


public function activities(): MorphMany

{

    $this->morphMany(Activity::class, 'subject', 'subject_id', 'hash');

}

活动模型关系:


public function subject(): MorphTo

{

    if (config('activitylog.subject_returns_soft_deleted_models')) {

        return $this->morphTo()->withTrashed();

    }

    return $this->morphTo('activity_log', 'subject_type', 'subject_id', 'hash');

}

另外,我在 ActivityLogger 中发现:


public function performedOn(Model $model)

{

    $this->getActivity()->subject()->associate($model);


    return $this;

}


胡说叔叔
浏览 223回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP