0

Posts我有和的数据库表comments
我想允许用户对每条评论和帖子进行喜欢或不喜欢。
所以..我没有这样做的想法。请告诉我我是否正确。

在评论表中创建两个额外的列。

likes | liked_uids

如果一个人点击like按钮,则为likes字段中的当前值添加+1,否则为当前值添加-1。并将用户的 id 作为字符串添加到liked_uids字段中,以“-”破折号分隔。然后下次我可以将该字符串放入数组并检查
当前用户 ID 是否已记录。如果用户 id 是,则可以确定该用户参与了点赞。

但是我对这种结构没有什么问题,如果有多个用户同时喜欢一个帖子怎么办?那么我可能会从字符串中丢失一些数据liked_uids(最后一个 uid)。

所以请告诉我这样做的正确方法是什么?

4

3 回答 3

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

不建议存储点赞数。如果要统计特定帖子的点赞数:

select count(*) from tableName where post_id = 100

存储由任何分隔符分隔的用户 ID 会使您遇到问题,因此不推荐。如果您的商店用户 ID 使用分隔符,则更新或检索将是一项整洁的工作。

如果您想查看特定用户是否喜欢特定帖子,请使用以下查询:

select count(*) from tableName where post_id = 100 AND uid =1
于 2013-11-05T07:32:42.517 回答
0

一种方法是使用单独的Likes表,其中包含Likes、DisLikes、Likes_UID、DisLikes_UID 列和用于评论和喜欢的映射表,例如:Comments_Likes和帖子和点赞 Posts_Likes

于 2013-11-05T07:32:44.747 回答
0

我在手机上打字太慢了^^一切都已经回答了。

我从来没有做过任何类似的事情,但我不会在评论表中添加这两列。我宁愿创建一个像“votes”这样的新表,它会有以下列。

comment_ref | like | user_ref

每次有人喜欢评论时,您都会在其中插入新行。您还可以将comment_ref 和user_ref 组合作为键,因此您不能将其插入两次。

最后,您只需进行查询即可获得单个评论的投票。

SELECT COUNT(*) FROM votes WHERE comment_ref = 123
于 2013-11-05T07:39:01.287 回答