我的AppServiceProvider引导方法中有一个morphMap设置,当Laravel可修改包调用记录时触发,因此没有返回任何内容。我想找出如何使用morphMaps进行可修改的工作。请注意,revisionable在保存记录时存储完整的命名空间,但在调用记录可修改时使用的是我为morphMap输入的值。
例如可修改版本保存App\Models\Organization\Organization
但我的morphMap在调用revisionHistory()时将其转换为organization
。
答案 0 :(得分:0)
我知道这是一个老问题,但我看到Venturecraft /可修改版开发人员没有给出这个问题的答案。
当包试图在$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文件夹中的那个。
如果您可以试一试并分享您所获得的内容将会有所帮助。