首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >自定义键的Laravel多态关系

自定义键的Laravel多态关系
EN

Stack Overflow用户
提问于 2019-05-20 16:05:07
回答 1查看 1.7K关注 0票数 1

在我的项目中,我正在处理多个数据库和一个中央数据库。我正在使用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;
}
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56216638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档