【发布时间】:2014-04-17 15:16:34
【问题描述】:
音乐探索网站
总结
我正在使用 Laravel 创建一个音乐搜索/发现网站。简而言之,艺术家有很多专辑,其中有很多曲目。 User 有许多与Tracks 关联的Tags。 标记只能在曲目上进行,不能在专辑或艺术家上进行。
用户访问该网站并可以搜索一组标签,例如“快乐”、“聚会”、“学校”。将返回曲目列表以及其他一些详细信息。
曲目首先由用户标记。用户应该能够看到他们标记的所有曲目,并且也能够根据标签进行搜索/过滤。
问题
使用我当前的设置(请参阅下面的表格结构),无法判断哪个用户标记了特定曲目。我正在考虑将两个表 tag_track 和 tag_user 合并为一个。新表的结构为:
Tag_Track_User 表
Tag_ID
Track_ID
User_ID
我的问题
- 如果我这样做,我要在模型上设置什么关系
- 如何获取与标签关联的所有曲目 (tags.text)
当前表结构
用户表
User_ID (UNI)
User_Name
艺术家表
Artist_ID (UNI)
Artist_Name
专辑表
Album_ID (UNI)
Album_Title
Artist_ID
跟踪表
Track_ID (UNI)
Track_title
Album_ID
标签表
Tag_ID (UNI)
Tag_text (UNI)
Tag_Track 表
Tag_ID
Track_ID
Tag_User 表
Tag_ID
User_ID
模型结构
艺人模特
有很多Tlbums
专辑型号
属于专辑 有许多曲目
履带型号
属于专辑 有许多曲目
用户模型
属于许多标签
标签模型
属于许多曲目 属于许多用户
【问题讨论】:
-
您为什么想知道谁标记了曲目?这些标签是个人的还是公共的?描述这些标签是什么以及用户如何将它们分配给曲目
-
我已经更新了问题(在顶部添加了两段来解释“情况”)
-
好的,所以标签是公开的,但你仍然没有说为什么你想知道是谁给这首歌加了标签。无论如何,您可以简单地在数据透视表 tag_track 上添加第三个 fk 字段来跟踪用户
-
因为它是一个音乐发现网站,你可以找到与你相似的歌曲标签的其他人,因此你可能会喜欢他们的音乐。您能否举例说明如何在关系方面引用模型。
标签: mysql laravel many-to-many pivot eloquent