php - MySql/Php - 如何检索/检查消息对用户来说是新的

标签 php mysql

我正在创建一个论坛,人们可以在其中提出问题并等待答案。我需要一种方法来检查消息对用户来说是否是新消息,或者消息是否已被看到。如果消息是新消息,我需要在用户登录时提供提醒。

实现此目标的最佳方式/架构是什么?

最佳答案

你可以像这样创建一个表views

- questionID
- userID
- lastMessageRead

您在 lastMessageRead 中保留了用户看到的最后一条提出问题的消息的 ID。 有了它,你可以检查 lastMessageRead 是否是最后一个答案的 ID,查询这个问题的新消息数量等等......


这是一个示例,说明如何使用示例表获取包含新消息的问题以及每个问题中的新消息数量。

Table: answers
+-------------------------------------------------------------+
|   answerID   |    questionID    |    userID    |    date    |
+-------------------------------------------------------------+

Table: questions
+--------------------------------------------+
|   questionID   |    userID    |    date    |
+--------------------------------------------+

Table: views
+-------------------------------------------------------+
|   questionID   |    userID    |    lastMessageRead    |
+-------------------------------------------------------+

SELECT q.*, COUNT(*) AS nbMessages
FROM answers a
    LEFT OUTER JOIN questions q
        ON a.questionID = q.questionID
    LEFT OUTER JOIN views v
        ON v.questionID = q.questionID
WHERE q.userID = 10 # ID of current user
AND ( a.answerID > v.lastMessageRead OR v.lastMessageRead IS NULL )
GROUP BY q.questionID
HAVING nbMessages > 0

关于php - MySql/Php - 如何检索/检查消息对用户来说是新的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24527339/

相关文章:

PHP 从两个不同的表中选择 *?

php - 将 mysql 从 5.1 更新到 5.6,但 php 信息仍然显示 5.1 客户端版本

mysql - 总分以前三名为准

php - count 子句输出数据库中的所有记录 - mysql

php - mysql php 私密邮箱之类的消息系统

java - 列表连接到数据库不显示数据JSP

mysql - 使用nodes-mysql进行复杂的SQL查询

php - 即使我的连接文件有效,phpmyadmin 上的数据库也不会保存数据

php - 由于用户错误而呈现错误的网页

PHP cURL CURLOPT_FILE 在 curl_exec() 之后为空