Как использовать Laravel revisionable с morphMaps?

У меня есть настройка morphMap в моем методе загрузки AppServiceProvider, который запускается, когда ревизуемый пакет Laravel вызывает запись, поэтому ничего не возвращается. Я хочу выяснить, как сделать ревизионную работу с morphMaps. Обратите внимание, что revisionable сохраняет полное пространство имен при сохранении записи, но при вызове записи revisionable использует значение, которое я ввел для morphMap.

Например, ревизионные сейвы App\Models\Organization\Organization но мой morphMap переводит это просто organization при вызове revisionHistory ().

1

Решение

Я знаю, что это старый вопрос, но я вижу, что разработчики Venturecraft / Revisionable не дают ответов на эту проблему.

Ошибка возникает, когда пакет пытается установить новую модель со значением свойства $this->revisionable_type в Venturecraft\Revisionable\Revisionпотому что класс не существует при использовании ключа массива $ morphClass вместо реального пространства имен модели.

Я понял, что проблема решается, когда я переопределяю значение этого свойства с помощью Laravel Accessor следующим образом:

use Illuminate\Database\Eloquent\Relations\Relation;

public function getRevisionableTypeAttribute($value)
{
$morphedModel = Relation::getMorphedModel($value);
return !empty($morphedModel) ? $morphedModel : abort(400, "The namespace {$value} hasn't been added to the Relation::morphMap() method.");
}

Теперь я не знаю, как добавить этот Accessor в модель Revision, не редактируя тот, который находится в папке vendor.

Если вы можете попробовать и поделиться тем, что вы получите, будет полезно.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]