Php 读取收件箱中邮件的状态

Php 读取收件箱中邮件的状态,php,mysql,Php,Mysql,我正在开发一个邮件收件箱系统,它使用基于线程的邮件布局。我目前正在努力更新邮件的读取状态。也许我把结构弄错了,所以我需要一些指导 以下是我所拥有的: Table messages ============== id thread_id from_user_id subject body sent_date Table message_threads ===================== id message_id owner_id member_id owner_read member_

我正在开发一个邮件收件箱系统,它使用基于线程的邮件布局。我目前正在努力更新邮件的读取状态。也许我把结构弄错了,所以我需要一些指导

以下是我所拥有的:

Table messages ============== id thread_id from_user_id subject body sent_date Table message_threads ===================== id message_id owner_id member_id owner_read member_read 在message_threads表中,“owner”指启动线程的用户,“member”指其他参与者。用户的收件箱将包含他们自己创建的线程所有者,以及其他用户创建的线程,他们已回复成员

设置读取状态的逻辑如下:

如果所有者发送回复:“成员读取”字段设置为0未读,“所有者读取”字段设置为1已读

如果成员发送回复:“所有者读取”字段设置为0未读,“成员读取”字段设置为1已读

现在我不认为这是完全正确的方法,因为假设一个成员希望按读取状态对收件箱中的邮件进行排序-但是用户可以同时是所有者和成员,表中有两个读取字段。所以这种说法是不正确的

有什么建议我应该怎么做吗

编辑:以下是一个示例场景:

用户1向用户2发送线程A 线程A出现在用户2的收件箱状态0:未读 用户2打开线程A 线程状态设置为1读 用户2回复线程A 线程状态为用户1的收件箱状态0:未读 线程状态为用户2的收件箱状态1:已读 用户1打开线程A 线程状态设置为1读 用户1回复线程A 线程化用户1收件箱中的状态状态1:已读 线程状态为用户2的收件箱状态0:未读
唯一的读取状态是来自非您的邮件。对收件人的回复在打开时标记为已读。发件人不在乎是否已阅读,除非您希望收到确认

因此-考虑到这一点,我认为我没有在消息中包含所有字段:

表用户

id
name
表消息

id (int)
parent_id (int)
from_user_id (id)
to_user_id
read (bit/bool)
message (text)

如果我没听懂你的意思,请告诉我。

所以。。。一条线只有两个人才能读?是的,没错。这是一对一的对话,我明白了。因此,您的方法是对实际消息而不是线程具有读取状态。但是,由于用户的收件箱将显示线程而不是单个消息,这会起作用吗?听起来,除了表之外,您还可以使用一个视图假设parent_id为0,则可以使用另一个表,在该表中,您可以通过消息_id、user_id、is_read跟踪线程。此表应仅包含启动线程的消息的ID。在显示消息时加入此表,现在您可以根据其读取状态显示/隐藏消息。我在这里认为,任何消息都有可能成为线程的一部分,只要它具有父线程id。我也是这么想的-但正如我在原始帖子中提到的,困难在于用户可以是线程的所有者,和另一个线程的接收者。由于有两个读取状态字段,因此排序将不正确。收件箱是统一的——这正是Facebook收件箱的工作方式。