【问题标题】:How to handle delete in messaging system?如何处理消息系统中的删除?
【发布时间】:2014-12-18 10:32:13
【问题描述】:

我已经创建了基于 mysql 数据库的内部消息系统。在我的数据库结构中,有一个消息表,其中每条消息都有发送者 user_id 和接收者 user_id。任何用户的收件箱都可以根据自己的id关系填充为messages表中的receiver_id。我的问题是当我尝试删除任何消息时,该消息从最终发送者和接收者都消失了。那么是否有任何替代解决方案,其中仅从执行删除操作的用户中删除消息。

这是我的消息表的表结构:

【问题讨论】:

  • 可能还有两列称为 date_delete_sender 和 date_delete_receiver。通常为 null,如果 != null 那些被删除,您可以知道何时使用日期时间字段(示例)或时间戳(示例)。您也可以使用标志 int(1) 代替
  • 你用`status`做什么?

标签: php mysql messaging inbox


【解决方案1】:

在 DB 表中再添加两个字段:

deleted_by_sender

deleted_by_receiver

这些需要做什么?

这些字段是不言自明的。

干杯:)

【讨论】:

  • 收件箱里回复了我发的消息后也显示在收件箱里,表示收件箱里有其他用户发的和我发的消息。当我尝试一次删除多条消息时,我如何将每条消息与当前用户进行比较是该消息的发送者或接收者,以及如何将标志更新到相应的字段,即 deleted_by_sender 和 deleted_by_receiver。
【解决方案2】:

当您删除味精时,您必须执行类似的操作,您应该有正在删除味精的 user_id。然后您必须先查询该味精以检查味精是否被发送者或接收者删除. 例如

$result = mysql_query("select sender,reciver from tbl_messages where msg_id='$msgid'");
$r = mysql_fetch_array($result);
$s = $r['sender'];
$r = $r['reciever'];
if($s==$user_id)
$st = "sender";
else if($r==$user_id)
$st = "reciever";
mysql_query("update tbl_messages set $st=0 where msg_id='$msgid'");

注意:我假设您根据发件人和收件人 ID 显示消息。 这只是一个示例(预计会有错误和遗漏)。希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-28
    • 1970-01-01
    • 2013-07-19
    • 2015-06-22
    • 1970-01-01
    • 2014-10-27
    相关资源
    最近更新 更多