gpt4 book ai didi

php - 如何在php消息系统中设置已读未读标志

转载 作者:行者123 更新时间:2023-12-03 20:32:07 24 4
gpt4 key购买 nike

我正在用 PHP 开发一个 Facebook 类型的消息系统。我有一个 user_message 表,其中包含 sender_idreceiver_idmessageflag作为已读/未读。在此表中插入值后,我将其设置为未读,当用户单击消息通知时,状态将更新为已读

对于单用户来说它运行良好。不过,在向多个用户发送消息时,我将 receiver_id 存储为表中的逗号分隔值。我的问题是如何为多个接收者设置标志?例如,如果我要向 3 个用户发送一条消息,那么如何设置已读标志?任何帮助将不胜感激。

最佳答案

While sending message to multiple users though, I am storing receiver_id as comma separated values in the table.

不要滥用字符串列来表示多个值。在大多数 DBMS 中不可能对以这种方式构造的列进行索引,因此您将无法有效地搜索它。这对于“消息接收者”结构尤其重要,因为这意味着不可能有效地搜索特定用户接收到的所有消息。这会使许多常见操作(例如检查发送给用户的新消息或查看用户邮箱)在大型网站上变得极其缓慢。

相反,如果您希望将消息发送给许多人,而不是为每个人发送单独的消息,请使用两个表对此进行建模,例如

CREATE TABLE message (
id INTEGER PRIMARY KEY NOT NULL,
sender_id INTEGER NOT NULL,
message TEXT NOT NULL
);

CREATE TABLE message_recipient (
message_id INTEGER NOT NULL,
recipient_id INTEGER NOT NULL,
PRIMARY KEY (message_id, recipient_id)
);

通过这样的表结构,您可以在 message_recipient 对象上放置一个“已读”标志,以便给定消息的每个收件人都具有单独的已读状态。

关于php - 如何在php消息系统中设置已读未读标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29764011/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com