我试图第一次在laravel中使用多对多多样性关系。在docs中,对于DB结构,它说:
taggables
tag_id - integer
taggable_id - integer
taggable_type - string
我想知道tag_id
和taggable_id
之间有什么区别,我们在每个中存储什么?
答案 0 :(得分:2)
使用多对多的多态关系可以让你拥有一个单一的多态关系 在博文和视频中共享的唯一标记列表。
阅读完毕后,我说taggable_id
引用posts.id
或videos.id
," taggable"实体。然后,taggable_type
回答了问题 - 是taggable_id
视频还是帖子?
用于更好可视化的全表结构:
posts
id - integer
name - string
videos
id - integer
name - string
tags
id - integer
name - string
taggables
tag_id - integer
taggable_id - integer
taggable_type - string
示例:强>
<强>帖子强>
+----+-----------+
| id | name |
+----+-----------+
| 12 | test post |
+----+-----------+
<强>视频强>
+----+-----------+
| id | name |
+----+-----------+
| 5 | test vid |
+----+-----------+
<强>代码
+----+--------------+
| id | name |
+----+--------------+
| 88 | programming |
+----+--------------+
<强> taggables 强>
+--------+-------------+---------------+
| tag_id | taggable_id | taggable_type |
+--------+-------------+---------------+
| 88 | 12 | post |
+--------+-------------+---------------+
| 88 | 5 | video |
+--------+-------------+---------------+