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

时间:2015-09-25 16:19:19

标签: laravel laravel-5

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

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

2 个答案:

答案 0 :(得分:9)

是。这是recently已实施的更改。

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

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

如果您只是传递一组模型名称it'll default to using the table names

Illuminate\Database\Eloquent\Relations\Relation::morphMap([
    App\Product::class,
    App\Staff::class,
]);

答案 1 :(得分:-1)

如果要将morphMap方法添加到服务提供者,则可能需要使用

'product' => \App\Product::class

(" \"在App之前),否则您的命名空间可能是错误的。

相关问题