Laravel改变了多态关系的存储值

rob*_*lli 2 laravel laravel-5

我试图使其他应用程序更容易读取多态关系的存储值.目前,多态模型类型存储为模型的FQCN.使用Laravel Docs中的示例,imageable_type可以是"App\Product"或"App\Staff".但是,如果任何非基于此约定并且也访问同一数据库的非laravel应用程序,则此值可能会更难管理.此外,如果模型FQCN曾被重构,则必须修改其他应用程序以考虑更改.

有没有办法将类型更改为更一致和可读的东西,然后有一个映射类将键映射到模型?(例如将"产品"映射到"App\Product")

Jos*_*ber 9

是.这是最近实施的变更.


将此添加到您的服务提供商(在boot方法中):

Illuminate\Database\Eloquent\Relations\Relation::morphMap([
    'product' => App\Product::class
]);
Run Code Online (Sandbox Code Playgroud)

如果您只是传递一个模型名称数组,它将默认使用表名:

Illuminate\Database\Eloquent\Relations\Relation::morphMap([
    App\Product::class,
    App\Staff::class,
]);
Run Code Online (Sandbox Code Playgroud)