我创建了一个线程消息系统,很像gmail和facebook,其中收件箱列出了显示主题,发件人姓名和最新邮件的时间戳的最新线索。创建一个线程式的私人消息系统,如Facebook和Gmail
这里是我的表是如何设置:
users:
user_id
user_name
thread:
thread_id
title
to_id
to_keep
to_read
from_id
from_keep
date
message:
message_id
thread_id
to_id
from_id
message_text
date
当用户创建一个新的消息,我在做什么现在的问题是,它会在线程表一个新的线程,然后在新的消息消息表以及用户是否响应线程,它会复制线程表中的当前线程,除了它交换to_id
和from_id
,然后基于此创建新消息。
此外,对于收件箱视图,我只能根据user_id
查询所有线程。所以类似SELECT * FROM thread WHERE to_id = 2 and to_keep = TRUE ORDER BY date DESC
或者如果我想查看发件箱中的邮件,它会是类似于SELECT * FROM thread WHERE from_id = 2 and from_keep = TRUE ORDER BY date DESC
。
如果用户在有新消息时打开线程,则to_read更新为真UPDATE thread SET to_read = TRUE WHERE thread_id = 4
。
我觉得我已经结束了这个过程,并且应该有更好的方法来做到这一点。
任何帮助或想法,将不胜感激。
这样,我们只需从线程表中选择所有内容,然后与用户表进行连接即可显示我需要的所有内容。不过,我觉得应该有更好的方式来做到这一点。
为什么线程需要to_id和from_id?消息是将发送者和接收者结合在一起的东西。线程只是消息的容器。或者我误解了? –
不,你是对的。我只是在查询时选择了应该在收件箱中的所有线程,并且仅仅从线程中最近的消息中获取信息。那有意义吗? – bigmike7801