2016-03-02 84 views
2

我想弄清楚一个交互式通知系统。我的应用程序是使用Laravel构建的,我目前使用Pusher将某些事件广播给客户端。我将在通知系统中使用相同的过程,但是,当用户弹出通知时,我想要一些样式,除非用户单击或悬停在通知上。Laravel交互式通知

我知道我可以用Javascript做到这一点,但是如果用户没有对该通知采取行动,退出并重新登录,我会希望这种样式保持完整,直到用户与该通知进行交互为止。

是否最好创建通知控制器,并且每当用户与该通知进行交互时,数据库记录是针对该特定用户更新的?这似乎很多,因为通知将公开并广播给几乎所有用户......并为每个用户创建一个数据库记录......这可能会创建一个TON记录。

任何帮助表示赞赏。谢谢!

回答

1

不知道这将是一个最好的方式,但我会设置:

  1. 通知模型
  2. 与用户的关系。 (用户 - 通知 - 多对多)
  3. 中级表保持通知&用户关系。

通知模型可以有以下数据库字段来保留您的通知数据。

  • ID
  • 标题
  • 消息
  • 状态

和你中间表可能有(notification_user表)

  • notification_id
  • user_id说明
  • read_on(时间戳)
  • is_archived(boolen)

当用户阅读通知您可以更新read_on时间戳的,所以你不要告诉他们所有的时间。你也可以为他们提供一个归档等选项,它应该在你的数据透视表中。

希望这会有所帮助。

+0

这与我如何考虑设置它相似。如果通知发送给1,000位用户,从而创建1,000条数据库记录,您是否会预见到问题?似乎这张桌子只是巨大的。 –

+0

如果您使用的是MYSQL,并且您的notification_id是无符号整数,则最大值为4,294,967,295。如果是无符号bigint,则最大值为18,446,744,073,709,551,615。如果你接近这些数字比我想你可以开始担心:) –

+0

好点,谢谢! –