我有Posts
和comments
的数据库表
我想允许用户对每个评论和帖子表达喜欢或不喜欢
所以..我很少有这样做的想法。请告诉我,无论我是否正确。
在评论表中创建另外两列。
likes | liked_uids
如果某人点击了like按钮,则在likes
字段中为当前值添加+1,否则为当前值添加-1。
并将用户的ID添加到liked_uids
字段,作为由“ - ”破折号分隔的标记。
然后下次我可以将该字符串输入数组并检查,
当前用户ID是否已记录。如果用户ID是,则可以决定用户是否喜欢参与。
但是我对这个结构没什么问题,如果不止一个用户会立刻想要一个帖子会怎么样?然后我可能会丢失liked_uids
字符串(最后一个uid)的一些数据。
所以请告诉我这样做的正确方法是什么?
答案 0 :(得分:1)
您可以像这样创建>
id type ('comment/like') uid comment post_id
1 comment 1 good post 100
2 like 2 null 101
3 like 1 null 102
4 comment 3 bad post 104
不建议存储像count一样。如果你想计算特定帖子的喜欢:
select count(*) from tableName where post_id = 100
存储由任何分隔符分隔的用户ID会使您遇到问题,因此不会推荐。如果您的商店用户ID使用分隔符,则更新或检索将是整理工作。
如果您想查看特定用户是否喜欢特定帖子,请使用以下查询:
select count(*) from tableName where post_id = 100 AND uid =1
答案 1 :(得分:0)
一种方法是使用单独的喜欢表格,其中包含喜欢,不喜欢,Likes_UID,DisLikes_UID 列以及用于评论和喜欢的映射表,例如: Comments_Likes 以及帖子和赞 Posts_Likes
答案 2 :(得分:0)
我在手机上输入的速度太慢了^^一切都已经回答了。
我从未做过类似的事情,但我不会在评论表中添加两列。我宁愿创建一个像“投票”这样的新表格,它会有以下列。
comment_ref | like | user_ref
每当有人喜欢评论时,你都会在那里插入新的一行。您还可以将组合comment_ref和user_ref作为键,因此您不能将其插入两次。
最后,您只需进行查询即可获得单个评论的投票。
SELECT COUNT(*) FROM votes WHERE comment_ref = 123