php - 类似对话的消息系统

标签 php mysql

我构建了类似于 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/

相关文章:

php - SQL 将值拆分为多个列

php 查找替换

php - 如何使用 JSON.stringify 在 javascript/node js 中模拟 php 的 json_encode?

php - 使用php将用户提交的信息发布到mysql数据库

php - 访客柜台

mysql - WordPress 根据条件更新自定义字段

php - 在 PHP 中执行 HTTPResponse

PHP fatal error : Call to undefined function mssql_query()

mysql - 如何从第二个表插入 mySQL 中的最后一条注释?

mysql - 在数据库之间移动表