Laravel - 多对多的多态关系

时间:2017-06-22 07:43:47

标签: laravel

我试图第一次在laravel中使用多对多多样性关系。在docs中,对于DB结构,它说:

taggables
    tag_id - integer
    taggable_id - integer
    taggable_type - string

我想知道tag_idtaggable_id之间有什么区别,我们在每个中存储什么?

1 个答案:

答案 0 :(得分:2)

  

使用多对多的多态关系可以让你拥有一个单一的多态关系   在博文和视频中共享的唯一标记列表

阅读完毕后,我说taggable_id引用posts.idvideos.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         |
+--------+-------------+---------------+