Laravel中的通知(Notifications)系统如何使用
发布时间 - 2025-11-18 00:00:00 点击率:次Laravel通知系统通过定义通知类统一发送邮件、数据库消息等,使用php artisan make:notification InvoicePaid生成类,via方法指定mail和database渠道,toMail设置邮件内容,toDatabase返回数据数组,用户模型调用notify发送,支持批量通知,数据库通知需执行notifications:table迁移,未读通知通过unreadNotifications获取并可标记为已读。
Laravel 的通知系统提供了一种简单、统一的方式来发送各种类型的消息,比如邮件、短信、数据库记录、Slack 消息等。你可以通过定义
通知类来集中管理这些消息的发送逻辑,而无需在控制器中混杂发送代码。
创建通知类
使用 Artisan 命令可以快速生成一个通知类:
php artisan make:notification InvoicePaid这会在 app/Notifications 目录下创建 InvoicePaid.php 文件。通知类中最重要的方法是 toMail、toArray 或 toDatabase,它们定义了不同渠道下的消息格式。
定义通知内容
以邮件和数据库为例,假设我们要在发票支付后通知用户:
class InvoicePaid extends Notification{
use Notifiable;
public function via($notifiable)
{
return ['mail', 'database'];
}
public function toMail($notifiable)
{
return (new MailMessage)
->line('您的发票已支付。')
->action('查看发票', url('/invoice'))
->line('感谢您使用我们的服务!');
}
public function toDatabase($notifiable)
{
return [
'invoice_id' => 123,
'amount' => 500,
'title' => '发票已支付'
];
}
}
via 方法指定通知应通过哪些渠道发送。支持的频道包括:mail、database、slack、broadcast 等。
触发通知发送
你可以通过模型实例上的 notify 方法发送通知。Laravel 默认在 User 模型中使用了 Notifiable trait,因此可以直接调用:
use App\Notifications\InvoicePaid;$user = User::find(1);
$user->notify(new InvoicePaid);
也可以批量通知多个用户:
User::all()->each->notify(new InvoicePaid);如果你只是想使用某个特定通道(例如只存数据库),可以用:
Notification::send($users, new InvoicePaid);数据库通知与前端展示
若使用 database 通道,需先创建数据表保存通知:
php artisan notifications:table然后执行迁移:
php artisan migrate数据库中的 data 字段会存储 toDatabase 返回的数组(序列化为 JSON)。
获取未读通知:
$user->notifications;获取未读通知:
$user->unreadNotifications;标记为已读:
$user->unreadNotifications->markAsRead();基本上就这些。Laravel 的通知系统结构清晰,扩展性强,适合用于解耦业务逻辑和消息发送。只需定义一次通知类,就能轻松支持多渠道输出。不复杂但容易忽略细节,比如迁移表或正确返回数组格式。
# laravel
# php
# js
# 前端
# json
# app
# ai
# mail
# class
# public
# function
# table
# database
# 数据库
# 你可以
# 已读
# 您的
# 如果你
# 就能
# 多个
# 最重要
# 可以用
# 只需
# 要在
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
iOS中将个别页面强制横屏其他页面竖屏
HTML 中动态设置元素 name 属性的正确语法详解
如何利用DOS批处理实现定时关机操作详解
Laravel Session怎么存储_Laravel Session驱动配置详解
Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程
深入理解Android中的xmlns:tools属性
微信小程序 canvas开发实例及注意事项
如何在阿里云虚拟主机上快速搭建个人网站?
手机软键盘弹出时影响布局的解决方法
如何确认建站备案号应放置的具体位置?
微信小程序 require机制详解及实例代码
Laravel如何处理异常和错误?(Handler示例)
Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议
Android实现代码画虚线边框背景效果
WEB开发之注册页面验证码倒计时代码的实现
如何快速搭建自助建站会员专属系统?
使用Dockerfile构建java web环境
高端网站建设与定制开发一站式解决方案 中企动力
瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口
昵图网官网入口 昵图网素材平台官方入口
html5的keygen标签为什么废弃_替代方案说明【解答】
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】
Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】
怎么用AI帮你设计一套个性化的手机App图标?
Mybatis 中的insertOrUpdate操作
ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
如何快速选择适合个人网站的云服务器配置?
如何快速搭建高效WAP手机网站吸引移动用户?
Laravel如何与Pusher实现实时通信?(WebSocket示例)
Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】
Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
Laravel Octane如何提升性能_使用Laravel Octane加速你的应用
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
Android中AutoCompleteTextView自动提示
Swift中循环语句中的转移语句 break 和 continue
轻松掌握MySQL函数中的last_insert_id()
夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化
如何在IIS7上新建站点并设置安全权限?
详解jQuery中的事件
详解CentOS6.5 安装 MySQL5.1.71的方法
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
b2c电商网站制作流程,b2c水平综合的电商平台?
作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】
nodejs redis 发布订阅机制封装实现方法及实例代码
Swift中swift中的switch 语句
如何快速生成可下载的建站源码工具?
Laravel如何创建自定义中间件?(Middleware代码示例)

