2017-05-16 38 views
0

我正在寻找解决方案来通知所有用户在应用程序中发生X活动。当下一次用户登录Laravel时通知用户5.4应用程序

我不是通过邮件或短信寻找通知。因为此特定通知将发送给所有用户,其中可能有1000到25000个用户。发送1000个邮件或短信是浪费资源。

我想通知用户使用注意到的东西,那就是他们会阅读。例如:如果X活动今天发生。并且Y用户在10天后登录他/她必须能够看到通知(我想在这种情况下,闪光消息不会起作用)。

什么是最好和最有效的方式?如果使用数据库的通知是我认为的方式。如何创建单个通知(数据库中的单个条目),并确保所有用户在下次登录时都阅读该通知?没有创建1000行?

回答

1

我认为在数据库中存储通知也是一种可行的方法。

如果您在UserNotification模型之间添加了多对多关系,并且在关系数据透视表上使用了is_read标志。

然后,当用户读取通知时,您将is_read标志更新为1。或者,如果您不需要为该用户保留通知,则可以删除该关系,从而减少过时记录的存储。

编辑

如果每个用户总会看到每一个通知,那么你可以在last_login_at时间戳存储在您的User模型,该模型更新每次用户登录英寸

然后每次用户登录,找到自last_login_at以来创建的所有Notification,并将它们展示给用户。

+0

我也这么想。所以当我创建新的通知。我应该在许多关系数据透视表中添加1000或行?每个用户的一行is_read为0.我认为这里有一个更好的解决方案。例如:当用户登录时,X用户看不到的所有通知应该显示在仪表板页面上,并自动在场景后面删除。或者我正在考虑在数据库中创建单行的通知条目,并在仪表板中显示一周或两周,然后删除该行。 –

+0

每个用户**总是**会看到每个通知吗? – fubar

+0

我不知道你的意思是每个通知。你的意思是系统中还有其他通知吗?我正在使用flash msg处理其他类型的通知,这是针对在线用户并为其帐户执行一些活动的用户。 –

相关问题