我使用多态关系已经有一段时间了,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;