喜欢和不喜欢的帖子系统

问题描述:

我想包括一个类似Facebook的喜欢/不喜欢的系统,到目前为止,我已经设置喜欢/不喜欢的列为'文本'类型。这样我可以为喜欢/不喜欢帖子的用户添加id。这是做这件事的最好方式吗?此外,除了上述问题之外,我将如何阻止用户再次按下喜欢和不喜欢按钮?因为,一旦用户喜欢帖子,它应该显示一个不同/不喜欢的选项?一个概念/想法将是如何做到这一点的伟大。喜欢和不喜欢的帖子系统

虽然很难做出决定的扶手椅,这里有我的想法:

第一,你可以为每个职位的“喜欢”整列。当用户上下点击时,将该数字递增或递减。这不会对用户多次点击提供保护,但它很容易且快速。

另一种方法是创建一个'Like'表,其中包含列post_id,user_id和score。分数可以有两个值:'1'或'-1'。所有3列是整数。当用户点击'like'时,您可以在user_id 012_post_id匹配的行上执行INSERT/UPDATE命令。

然后,要查看帖子的最终分数,请执行SELECT SUM(分数)FROM that_table WHERE post_id = ?.

使用第二种方法,如果您想查看最近的答题器的名称,可以添加一个时间戳列并搜索最近的条目。

+0

我很想选择具有post_id(Posts Table)和user_id(Users Table)作为外键的Table选项,然后按照您的建议评分和时间戳。我认为像/不像选项,我将不得不查询我已经申请1的所有帖子,并提供一个不同的选项,并做同样的不喜欢。这是做这件事的最好方式吗?感谢您的建议。 – Unleashed

+0

是的,外键是你想要的。另外,您可能希望使{post_id + user_id}成为复合主键。至于你最后提出的不喜欢/不喜欢的问题,你必须决定你想要的功能。如你所说,一种选择是“不像”。另一个就是不允许不喜欢。第三个原因是,当用户点击不同,但他们已经喜欢它,它只是删除他们的'喜欢',实际上并没有使它成为'不喜欢'(除非他们再次点击它)。这样,你不必计算什么按钮显示,直到他们点击它们:) –

+0

听起来像一些很好的选择,谢谢:)有帮助的帖子,如果我只能投票你,但我需要15分,所以请有人+1这家伙。 – Unleashed

我想创建一个表具有以下结构:

表:喜欢

  • 帖子ID BIGINT
  • 用户ID BIGINT
  • 像位(真,假)

然后将PostId和UserId设置为主键。这将防止数据库为同一帖子插入多个喜欢/不喜欢。

在您的代码中,检查用户/帖子组合是否存在,然后切换位值,如果是,或者将位值设置为true(如果没有)。

+0

我已决定与表选项,感谢您的建议。 – Unleashed