Backgroun:我正在尝试使用转换视图在Mysql中构建一个私人消息系统。
我有一个msg_received tbl,看起来像这样
id from_member_id to_member_id message_id
1 123 456 101
2 456 123 102
3 123 456 103
4 456 123 103
所以当userA(id:123)查看他的转化历史时;他看到他发送给userB的2条消息(id:456)和他从userB收到的2条消息(id:456)。所以他总共看到4条消息。对于userB也是如此;他总共看到4条消息。
问题是我想允许userA删除其中一条消息。让我们说他想删除msg_id 103.所以现在userA只能看到3条消息。
问题是当userB尝试查看转义历史记录时;他也只看到3条消息而不是4条消息。这是因为他没有删除任何消息,并希望看到完整的历史记录。
你们可以提供任何提示吗?
答案 0 :(得分:1)
添加2个标记:deleted_by_sender
和deleted_by_recipient
。
当只有一个用户“删除”时 - 设置approproate标志。当两个标志= 1时 - 物理删除记录。
此外 - 现在您需要在AND deleted_by_recipient = 0
WHERE
条件
答案 1 :(得分:1)
在名为hide_from的表中找一列,
check the sample table for reference
假设我们为用户提供了两个唯一的ID, 例如那些ID是2和5,在你的聊天表中,你有2个from_id以及to_id和vise-e-versa。
如果用户2删除聊天线程,则在hide_from中插入2, 现在,如果用户5删除聊天线程,则检查hide_from是否为NULL&& hide_from = 2,删除2&的所有消息5
答案 2 :(得分:0)
一种简单的方法是为“from_user_deleted”和“to_user_deleted”添加两列,然后在显示消息列表时尊重这些列(并在设置两个标志时进行清理。)
答案 3 :(得分:0)
添加一个标志状态,让您可以按住:
0 - 未读
1 - 阅读
2 - 由发件人删除
3 - 被收件人删除
4 - 垃圾邮件等