У меня есть настройка morphMap в моем методе загрузки AppServiceProvider, который запускается, когда ревизуемый пакет Laravel вызывает запись, поэтому ничего не возвращается. Я хочу выяснить, как сделать ревизионную работу с morphMaps. Обратите внимание, что revisionable сохраняет полное пространство имен при сохранении записи, но при вызове записи revisionable использует значение, которое я ввел для morphMap.
Например, ревизионные сейвы App\Models\Organization\Organization
но мой morphMap переводит это просто organization
при вызове revisionHistory ().
Я знаю, что это старый вопрос, но я вижу, что разработчики 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.
Если вы можете попробовать и поделиться тем, что вы получите, будет полезно.
Других решений пока нет …