如何通知使用已读/未读标志对用户进行分组


How to make notification to group users with read/unread flag?

我正在制作一个通知系统,以便当组中的用户执行操作时,它将通知组中的所有其他用户。我希望将组中的每个用户的通知标记为"已读"或"未读"。有了它,我可以轻松地检索用户的任何未读通知并显示它。我正在考虑创建一个具有以下字段的通知表。

+----------------------+
| notification         |
+----------------------+
| id                   |
| userid               |
| content              |
| status (read/unread) |
| time                 |
+----------------------+

我的问题是:

  1. 是否是制作系统的正确方法?这意味着当一个组中有 1,000 个用户时,我必须在表中插入 1,000 行。如果没有,有什么更好的方法呢?
  2. 如果这是这样做的方法,我如何编写 php/mysql 代码来执行插入行的循环?

谢谢!

更好的方法是通过执行以下操作将通知与用户分开:

Table Notification
------------------
not_id
time content
Table User
----------
u_id
Table NotificationStatus
------------------------
id
u_id
not_id
bool read

这样,您只需保存每个通知一个,这使得修改/编辑通知更容易

考虑以下数据结构:

Table: Events
----------------
event_id
user_id (foreign key to users table)
action_id (foreign key to actions table)
time_stamp
Table: Log
----------------
user_id (foreign key to users table)
event_id (foreign key to events table)
time_stamp

逻辑应该是用户 X 认为所有事件都未读,除非 Log 表包含该用户的event_id

操作

表可能具有多种类型的操作。

您将能够通过查询日志来计算并通知所有用户有多少其他用户"收到"了该操作。 等等'...

是的。你可以用这种方式做到这一点。示例:假设任何用户"PQP"(user_id=1)正在添加照片,那么您必须在照片添加查询成功时编写通知查询(您需要在您希望该点作为通知的任何地方为代码编写通知写入查询),因此您的通知表将获得新条目

id = 1                
userid =1           
content = "Photo Added By User PQP"            
status = Unread
time = currenttime

因此,在这种情况下,每当有人上传照片时,通知表都会在其中输入。