17

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

移动应用流程如下:

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

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

4

3 回答 3

30

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

from_user | to_user | notification | seen

然后每当您想通知用户时,您只需添加一条包含所需信息的记录并设置seen0/ 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  
于 2012-05-11T02:01:07.153 回答
5

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

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
 }
于 2012-05-11T02:30:32.320 回答
5

扩展杰弗里的答案:

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

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

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

于 2013-07-02T20:25:12.883 回答