引用多态类型?

时间:2019-09-11 07:23:24

标签: laravel laravel-5 eloquent eloquent--relationship

我使用多态关系已经有一段时间了,morph_type列存储了许多重复的字符串,而且我担心如果有一天我需要重构模型,那么我可能需要从几张表中替换它们。 / p>

这是一个简单的变形关系(来自laravel文档)

posts
    id - integer
    name - string

users
    id - integer
    name - string

images
    id - integer
    url - string
    imageable_id - integer
    imageable_type - string

imageable_type中的images存储了许多'App \ Models \ Blog \ Post'和'App \ Models \ Blog \ User'字符串。

images表如下所示:

id|url    |imageable_id|imageable_type
1 |http://|1           |App\Models\Blog\User
2 |http://|1           |App\Models\Blog\Post
3 |http://|2           |App\Models\Blog\User
4 |http://|3           |App\Models\Blog\Post
5 |http://|5           |App\Models\Blog\User

如果创建另一个imageable_types表作为imageable_type引用怎么办?

imageable_types
    id - integer
    type - string

imageable_types表如下:

id|type
1 |App\Models\Blog\User
2 |App\Models\Blog\Post

images表将类似于:

id|url    |imageable_id|imageable_type_id
1 |http://|1           |1
2 |http://|1           |2
3 |http://|2           |1
4 |http://|3           |2
5 |http://|5           |1

是好是坏?

如果可能的话,如何修改模型而不影响原始代码?

赞:

$post = App\Models\Blog\Post::find(1);

$image = $post->image;
$image = App\Models\Blog\Image::find(1);

$imageable = $image->imageable;

0 个答案:

没有答案