我正在开发一个PM系统,我希望将之前发送的PM用于一个对话,列在最后收到的PM上方。但我的问题是:如何在数据库中设置这样的表?我玩了一段时间来为每个特定的对话使用id,但该id的来源是什么?我不能使用自动增量(似乎),因为我将它用于主“id”列。
或许我可以尝试使用已经可用的列(id,from,to,subject,message,sent,read,deleted);但怎么样?请帮助一个失踪的人。
答案 0 :(得分:2)
您可以在表格中添加origin_id
列,其中包含根/原始邮件的id
,如果是新讨论(根),则可以NULL
。
然后,您可以通过过滤除origin_id = NULL
之外的消息来获取根消息,然后按origin_id
分组以获取消息线程。
答案 1 :(得分:0)
好的,所以我已经部分解决了...... 我使用另一个包含一列的表来保存PM的主题。我在常规“pms”表中也有一个新列,它包含相同的ID,可以将表连接在一起。
然而,当我选择所有PM以在收件箱中显示它们时,我还没有找到一种方法来按顺序对对话进行分组,如果它们被读取或不被读取。我目前正在使用这个SQL查询:
SELECT *
FROM `pms`
JOIN `pm_conversations` ON (pms.ConvID = pm_conversations.ID)
WHERE pms.To='username'
GROUP BY pm_conversations.ID
ORDER BY pms.ID
我想出了这个:
SELECT MAX(pms.ID) as pmIDS,
pms.*,
pm_conversations.*
FROM `pms`
JOIN `pm_conversations` ON (pms.ConvID = pm_conversations.ID)
WHERE `To`='".$UserActive."'
GROUP BY pm_conversations.ID
ORDER BY pmIDS DESC