关于Notifiable Trait的使用疑惑

1. 运行环境

Windows11 + Homestead (PHP7.4/Mysql5.7) + Laravel8.5

2. 问题描述?

按照官网文档,使用Notifiable Trait来做系统的“通知中心”。
文档:消息通知《Laravel 9 中文文档》
发送频道指定的是 database;

发送通知有两种方法:

$user->notify(new  InvoicePaid($invoice));
Notification::send($users,  new  InvoicePaid($invoice));

因为我业务是一次批量给多个用户发送同一通知,所以如果用第一种方法的话,就得遍历用户一个一个的发,所以我使用的第二种方法,传入要发送的所有用户实例集合;

问题来了:

页面顶部有个“小铃铛”的通知中心入口,小铃铛边上显示用户未读的消息数,因此我再User模型中新增了notification_count 作为冗余字段来存储未读消息数量;
如果用第一种方法,即 $user->notify(...)发送通知,因为User模型中使用了Notifiable Trait 即:use Notifiable;,所以可以通过重写notify方法来实现notification_count 字段的值+1;

但是我用的第二种方法,Notification::send(...),怎么实现发送通知后,给用户的notification_count字段 +1 呢?

3. 您期望得到的结果?

批量给用户发送通知时更新用户的未读消息数量;

正在努力学习的小逗比 [ dobeen.net ]
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

通知发送成功后会触发一个事件「NotificationSent」

可以监听这个事件来修改未读通知数

不过这样是逐条处理的,如果你确保每条都发送成功了,自己批量修改下也没问题吧

1年前 评论
Mutoulee (楼主) 1年前
讨论数量: 2

通知发送成功后会触发一个事件「NotificationSent」

可以监听这个事件来修改未读通知数

不过这样是逐条处理的,如果你确保每条都发送成功了,自己批量修改下也没问题吧

1年前 评论
Mutoulee (楼主) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!