我需要使用php和mysql在我的web应用程序中实现线程消息。如何在Web应用程序中实现线程消息,如Facebook
下面是我的表格结构。
我正在使用下面的查询来选择登录用户的线程。
让我们考虑登录用户“18”比我的查询是。
SELECT `m1`.`message_id` AS `message_id` , `m1`.`receiver` AS `receiver` , `m1`.`sender` AS `sender` , `m1`.`message` AS `message`, `m1`.`read_status` AS `read_status` , `m1`.`rcvd_date_time` AS `rcvd_date_time`
FROM (
`messages` `m1`
LEFT JOIN `messages` `m2` ON ((
(
`m1`.`receiver` = `m2`.`receiver`
)
AND (
`m1`.`message_id` < `m2`.`message_id`
))
)
)
WHERE ISNULL(`m2`.`message_id`)
AND (
m1.sender =18
OR m1.receiver =18
)
ORDER BY m1.rcvd_date_time DESC
而我正在得到低于结果。
你可以看到我得到2个线程的用户25,看来我会得到2线程为每个用户使用上述查询。
任何人都可以帮我实施吗?
我应该需要更改表结构吗?或查询?
开始是的,所以首先我们需要使用接收者ID查询我们想要发送消息,如果消息与receiver_id存在message_id将被认为是in-reply-message-id(parent_id),如果不是,消息将被作为新线程输入,不是吗? –
如果我理解你的评论,是的。如果没有'in-reply-to-message-id',那么这是一个新线程。否则,您可以递归地将相关消息抓取到多个级别的线程中,或将线程限制到单个级别。 – ssaltman