【问题标题】:Best Way To Build A Multi-Notification System in PHP用 PHP 构建多通知系统的最佳方法
【发布时间】:2012-05-19 15:21:49
【问题描述】:

我目前正在开发一个移动应用程序,可以让您向朋友询问收藏夹,它是一个 HTML5 前端和一个 PHP 后端。我不知道构建通知系统的最佳方法是什么,更多的是数据库架构而不是实际代码本身。

移动应用流程如下:

  • 用户请求帮助
  • 用户可以选择;通知所有朋友、通知最喜欢的朋友或通知附近的朋友
  • 根据用户的选择,通知人们

在 PHP 和 MySQL 中最好的方法是什么?我并不是真的要求任何人为我编写 PHP 代码,而是绘制出最理想的 MySQL 表和字段模式,因为这是我目前所坚持的。提前感谢您的帮助。

【问题讨论】:

    标签: php mysql codeigniter database-design database-schema


    【解决方案1】:

    您可以创建一个通知表,例如:

    from_user | to_user | notification | seen
    

    然后每当您想通知用户时,您只需添加一条包含所需信息的记录并将seen 设置为0 / false

    然后当用户阅读通知时,您将该参数设置为1 / true

    例子:

    from_user | to_user | notification | seen
        -          -          -           -
    

    用户 john 通知用户 jeff:

    from_user | to_user | notification | seen
       john      jeff       whatever..    0
    

    用户 jeff 阅读了通知:

    from_user | to_user | notification | seen
       john      jeff       whatever..    1  
    

    【讨论】:

    • 所以基本上如果用户选择通知最喜欢的朋友,我会首先进行查询以获取当前用户最喜欢的用户 ID,然后为每个用户批量插入通知表身份证?这似乎足够合乎逻辑。最初我确实想到了这样的事情,但我想也许还有另一种方法。这似乎是合乎逻辑的事情。
    • @Dwayne,是的。或者你可以做一个子查询(dev.mysql.com/doc/refman/5.5/en/subqueries.html)。无论如何,这似乎是最合乎逻辑和最干净的方式。我还会删除所有超过 7-14 天的通知以优化所有内容,但这取决于你。
    • 一种简单但可靠的方法+1
    【解决方案2】:

    为什么不在一个名为“通知”的表格中列出所有通知

    id | user_id | from_user_id | notification
    
    • id = 通知 ID
    • user_id = 通知是谁?
    • from_user_id = 谁发送了通知?
    • 通知 = 消息

    然后作为伪代码:

    // Create a notification from User A to User B
    $this->db->insert ('notifications', array ('user_id' => $friends_id, 'from_user_id' => $current_user_id, 'notification' => $message));
    
     // The meanwhile, on your home page or somewhere, wherever you want to display notifications
     $this->db->where ('user_id', $current_user_id)
     $notifications = $this->db->get ('user_id');
     foreach ($notifications as $notification)
     {
             // Display the notification as needed
             // Optionally delete the notification as it is displayed if it is a "one off" alert only
     }
    

    【讨论】:

    • 感谢您的回答。我同意 Jeffrey 首先发布的答案,但感谢您抽出宝贵时间做出回应,因此我对您投了赞成票。
    【解决方案3】:

    扩展杰弗里的答案:

    id  |  from_user | to_user | notification | seen | timestamp
     -         -          -          -           -         -
    

    时间戳将帮助您确定特定通知发生的时间。您还可以通过使用timeago.jsLivestamp.js 扩展您的脚本来创建时间时刻

    它还可以帮助您创建通知时间线,并且通知的维护会更简单。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-14
      • 1970-01-01
      • 2010-12-30
      • 2012-12-26
      • 2012-05-21
      • 1970-01-01
      相关资源
      最近更新 更多