Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何检查用户是否已经喜欢该评论_Mysql_Api_Web Services_Facebook Like - Fatal编程技术网

Mysql 如何检查用户是否已经喜欢该评论

Mysql 如何检查用户是否已经喜欢该评论,mysql,api,web-services,facebook-like,Mysql,Api,Web Services,Facebook Like,我正在为客户端应用程序设计一个“http api”,它是关于评论的,情况是,如果应用程序用户登录,他可能喜欢一些评论,也可能不喜欢,但他们不能喜欢两次或更多次,因此每次应用程序从我的“http api”获取评论数据时,数据应该能够告诉客户端应用程序用户是否已经喜欢该评论。 嗯,我最近实现了api,但我发现它工作不好,我的设计是: 插入: 我创建了一个表“Comment”,用于保存评论(内容、创建时间等),一个表“User”用于app User,另一个表“Like”用于记录用户喜欢哪条评论的信息

我正在为客户端应用程序设计一个“http api”,它是关于评论的,情况是,如果应用程序用户登录,他可能喜欢一些评论,也可能不喜欢,但他们不能喜欢两次或更多次,因此每次应用程序从我的“http api”获取评论数据时,数据应该能够告诉客户端应用程序用户是否已经喜欢该评论。 嗯,我最近实现了api,但我发现它工作不好,我的设计是:

插入: 我创建了一个表“Comment”,用于保存评论(内容、创建时间等),一个表“User”用于app User,另一个表“Like”用于记录用户喜欢哪条评论的信息 当用户喜欢评论时: 1、增加“注释”表中记录的“相似计数” 2,像set user='the user'和comment='the comment'一样插入到表中

查询:

  • 从mysql查询评论列表(每页约20条记录)
  • Foreach very comment and query from table,比如where comment=='the comment'和user='the user'
  • 如果查询结果在步骤2中存在,则表示用户以前喜欢该注释

  • 问题是,当客户端获得一个页面的评论时,这意味着我必须使用表'Like'执行20个查询,以检查用户以前是否喜欢它,我认为这将是非常糟糕的设计。我知道我可以使用一些缓存,比如Redis,这是下一步,我想知道mysql的好方法是什么?

    我想注释存储在一个表中,因此会有注释id

    对于具有用户id的用户也是如此

    likes存储在名为likes的表中,有两列:user\u id和comment\u id。这两列都是comments表和user表的外键

    它们一起构成表中的主键。从而防止重复

    如果用户123希望再次喜欢注释1000,则会导致123-1000组合的重复键错误。
    因此,您的应用程序不需要在插入之前进行检查:插入将失败。对于您的应用程序,任务是识别错误消息并给出错误消息

    在您的查询中使用
    LEFT JOIN
    ,以便在获得评论的同时为用户从
    Like
    表中获取信息。感谢您的回复,Barmar先生,LEFT JOIN将保存我的查询计数,这可能是最有效的工作方式,非常感谢你。顺便说一句,在这种情况下,这不是常见的方法吗?^ ^是的,当插入到表“like”中时,它会自动定义为坏的“like”,但用于查询的nouse…我知道您需要这些信息来知道是否允许插入。但你也需要它在te长列表中的每个记录?正如上面Barmar所建议的那样,左连接将是一种方式