我正在创建一个论坛,人们可以在其中提出问题并等待答案。我需要一种方法来检查消息对用户来说是否是新消息,或者消息是否已被看到。如果消息是新消息,我需要在用户登录时提供提醒。
实现此目标的最佳方式/架构是什么?
最佳答案
你可以像这样创建一个表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/