如何在morphMaps中使用Laravel可修改?

时间:2016-03-16 17:57:19

标签: php laravel revisionable

我的AppServiceProvider引导方法中有一个morphMap设置,当Laravel可修改包调用记录时触发,因此没有返回任何内容。我想找出如何使用morphMaps进行可修改的工作。请注意,revisionable在保存记录时存储完整的命名空间,但在调用记录可修改时使用的是我为morphMap输入的值。

例如可修改版本保存App\Models\Organization\Organization但我的morphMap在调用revisionHistory()时将其转换为organization

1 个答案:

答案 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文件夹中的那个。

如果您可以试一试并分享您所获得的内容将会有所帮助。