我构建了类似于 Facebook 消息的消息系统。对话是在一个 mysql 表中进行的,因此我有 receiverId、senderId、messageContent ...
我的问题是,我想实现“删除消息”功能,但我不知道如何实现,所以如果该对话的一个成员删除了所有消息,其他成员仍然应该看到所有消息,直到其他成员删除这些消息还有消息。
所以我的方法(显然是错误的)是添加额外的列:deletedByReceiver和deletedBySender,这对于接收者来说没问题,但是如果发件人打开这些消息,那么他只能看到他发送的消息,因为我的查询说:select *来自收件箱,其中deletedByReceiver!= 1
所以我不要求代码,我要求如何解决这个问题
最佳答案
如果我理解问题正确的话,你只需要将两组条件“或”在一起即可。如果我是发件人且deleteBySender != 1
,则需要包含该消息或者我是接收者并且 deleteByReceiver!=1
.
所以类似:
SELECT * FROM inbox
WHERE
(senderId = <MYID> AND deleteBySender!=1) OR
(receiverID = <MYID> and deleteByReceiver!=1)
当然,<MYID>
被查看者的用户 ID 替换。
关于php - 类似对话的消息系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19988981/