在我的项目中,我正在处理多个数据库和一个中央数据库。我正在使用spatie的活动日志包将控制面板中完成的操作记录到所有数据库中。
我在每个数据库(除了中央数据库)中都有一个表项,其中包含自动递增的主键和另一个名为hash的索引,这是一种uuid。哈希始终是唯一的。
现在,当我想要记录操作时,我会遇到问题,因为它将保存项目的ID,所以…在我的活动表中,我将获得subject_id = 1的两个记录,而一个活动发生在一个数据库上,另一个活动发生在另一个数据库上,依此类推。
如何在不更改相关模型的$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;
}
https://stackoverflow.com/questions/56216638
复制相似问题