В моем проекте я работаю над несколькими базами данных и одной центральной.Я использую пакет журнала активности spatie для регистрации действий, выполненных из панели управления для всех этих баз данных.
У меня есть таблица Items в каждой из баз данных (кроме центральной) с автоинкрементным первичным ключом и другим индексом, называемым hash, который является своего рода uuid.Хэш всегда уникален.
Теперь, когда я хочу регистрировать действия, я могу столкнуться с проблемой, так как при этом будет сохранен идентификатор элемента, поэтому ... в моих таблицах действий я получу две записи для subject_id = 1, в то время как одно действие произойдет сПункт на одной БД и другой на другой, и так далее.
Как изменить морфинг набора для использования моего столбца uuid вместо идентификатора без изменения значения $ primaryKey в связанной модели?
Отношение модели товара:
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;
}