请问这种情况下表关系如何设计
现在有个系统,用户可以点赞(喜欢或者不喜欢)文章、回复和其他用户。表结构如下:
用户-users : id,
文章-articles: id,
回复-replies: id,
点赞-votes: id, name(喜欢或不喜欢),
目前个人的想法:user, article, reply 与 vote 为“多对多多态”关系。那么就有中间表votables, 表结构如下:
votables:vote_id, votable_id, votable_type
现在想把点赞与发出点赞的用户用“多对多”的关系关联起来,请问该把user_id 放在哪?
本作品采用《CC 协议》,转载必须注明作者和本文链接
关于 LearnKu
放 votables 表
直接拉个表articles_users_votes 代替点赞表
article_id user_id voteType(喜欢/不喜欢 tinyInt) 然后这三个建个唯一索引(如果只能点赞一次的话)就好了 。
然后articles表里面加一个点赞统计数量的字段就好了
是这么搞的吗?
回复点赞表(回复ID 主键,用户ID 主键,点赞ID)
votes 表不是必要的,因为这只是一个枚举值,dislike 或者 like。
votables:user_id, votable_id, votable_type, type(字符串 dislike 或者 like)
代码你参考一下,没测试,随手写的:
composer require spatie/laravel-tags
spatie.be/docs/laravel-tags/v4/bas...
这个基本能解决问题