Laravel如何发送系统通知?(Notification渠道示例)

发布时间 - 2025-12-20 00:00:00    点击率:
Laravel系统通知核心是Notification类配合渠道,支持mail、database、broadcast等原生渠道及Twilio/Slack等扩展;需使用Notifiable trait,通过notify()发送,via()声明渠道,toXxx()定义格式,并优化notifications表索引。

在 Laravel 中发送系统通知,核心是使用 Notification 类配合预定义或自定义的 通知渠道(Channels)。Laravel 原生支持 mail、database、broadcast、sms(需扩展)、slack 等渠道,你可以按需选择并轻松切换。

基础通知类与发送方式

先用 Artisan 命令生成一个通知类:

php artisan make:notification UserWelcomeNotification

生成的类位于 app/Notifications 目录下,默认包含 toMail() 方法。发送时直接调用用户或可通知对象的 notify() 方法:

$user->notify(new UserWelcomeNotification());

注意:接收方模型需使用 Notifiable trait。

多渠道通知配置示例

一个通知可同时推送到多个渠道,只需在通知类中定义对应方法:

  • toMail($notifiable):返回 Mailable 对象,用于邮件通知
  • toDatabase($notifiable):返回数组,存入 notifications 表供前端拉取
  • toBroadcast($notifiable):返回广播数据,配合 Laravel Echo 实现实时提醒
  • via($notifiable):显式声明启用哪些渠道,例如:return ['mail', 'database', 'broadcast'];

短信与 Slack 渠道接入

Laravel 不内置短信和 Slack 支持,但生态成熟:

  • SMS:推荐使用 laravel-notification-channels/twiliovonage/laravel,安装后在通知类中添加 toTwilio()toVonage() 方法
  • Slack:引入 laravel-notification-channels/slack,配置 webhook URL 后,实现 toSlack() 方法即可推送至指定频道
  • 所有第三方渠道都遵循统一模式:在 via() 中加入渠道名,并提供对应 toXxx() 方法

数据库通知的读取与管理

使用 database 渠道时,通知会存入 notifications 表(需运行 php artisan notifications:table && php artisan migrate):

  • 标记已读:$user->notifications()->where('id', $id)->markAsRead();
  • 获取未读数:$user->unreadNotifications->count()
  • 前端可通过 API 获取:$user->notifications()->latest()->limit(10)->get()
  • 建议给 notifications 表的 notifiable_idnotifiable_type 加联合索引提升查询效率

基本上就这些。通知机制灵活,关键是根据场景选对渠道、写好格式化逻辑,并注意数据库表结构和索引优化。


# php  # laravel  # 前端  # app  # ai  # echo  # count  # mail  # 对象  # table  # database  # 数据库  # 类中  # 你可以  # 多个  # 只需  # 推荐使用  # 自定义  # 可通过  # 第三方  # 先用  # 写好 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: ,在苏州找工作,上哪个网站比较好?  laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能  Laravel项目怎么部署到Linux_Laravel Nginx配置详解  Bootstrap整体框架之CSS12栅格系统  如何选择可靠的免备案建站服务器?  如何快速搭建二级域名独立网站?  laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程  制作企业网站建设方案,怎样建设一个公司网站?  uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址  Laravel如何与Pusher实现实时通信?(WebSocket示例)  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  制作电商网页,电商供应链怎么做?  微信公众帐号开发教程之图文消息全攻略  昵图网官网入口 昵图网素材平台官方入口  nginx修改上传文件大小限制的方法  如何用搬瓦工VPS快速搭建个人网站?  如何快速打造个性化非模板自助建站?  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  WordPress 子目录安装中正确处理脚本路径的完整指南  免费网站制作appp,免费制作app哪个平台好?  高防服务器:AI智能防御DDoS攻击与数据安全保障  php静态变量怎么调试_php静态变量作用域调试技巧【解答】  如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】  打开php文件提示内存不足_怎么调整php内存限制【解决方案】  三星网站视频制作教程下载,三星w23网页如何全屏?  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】  Laravel怎么调用外部API_Laravel Http Client客户端使用  实例解析angularjs的filter过滤器  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  Laravel集合Collection怎么用_Laravel集合常用函数详解  Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程  Laravel用户密码怎么加密_Laravel Hash门面使用教程  Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?  打造顶配客厅影院,这份100寸电视推荐名单请查收  实现点击下箭头变上箭头来回切换的两种方法【推荐】  魔毅自助建站系统:模板定制与SEO优化一键生成指南  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  🚀拖拽式CMS建站能否实现高效与个性化并存?  Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】  Laravel如何生成URL和重定向?(路由助手函数)  Laravel定时任务怎么设置_Laravel Crontab调度器配置  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  如何快速搭建自助建站会员专属系统?  Win11怎么开启自动HDR画质_Windows11显示设置HDR选项  如何在服务器上三步完成建站并提升流量?  如何在IIS中新建站点并配置端口与物理路径?