You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel使用Notification批量发通知时如何获取单个用户详情

实现方法

Laravel 的 Notification 批量发送逻辑内部确实会逐一遍历目标用户集合,且框架本身已经把当前接收通知的单个用户实例自动注入到通知类的各个渠道方法中,不需要你手动传入或者循环发送。

你只需要按以下步骤调整即可:

  1. 维持你最初的批量调用写法即可,不需要额外传用户集合:
Notification::send($users, new PostAlert($post));
  1. 在 PostAlert 通知类中,所有渠道方法(toMail/toDatabase/toSms 等)的第一个参数就是当前触发通知的单个用户模型,直接调用对应属性即可。

完整的通知类示例:

use Illuminate\Notifications\Notification;
use Illuminate\Notifications\Messages\MailMessage;

class PostAlert extends Notification
{
    // 存储传入的文章数据
    protected $post;

    // 构造方法只需要接收文章数据即可,不需要传用户
    public function __construct($post)
    {
        $this->post = $post;
    }

    // 邮件渠道示例,第一个参数 $user 就是当前接收通知的单个用户实例
    public function toMail($user)
    {
        return (new MailMessage)
            ->greeting('您好,'.$user->name) // 直接调用用户的属性即可
            ->line('你关注的专栏更新了新文章:'.$this->post->title)
            ->action('查看文章', url('/posts/'.$this->post->id));
    }

    // 其他渠道方法同理,第一个参数都是当前的用户实例
    public function toDatabase($user)
    {
        return [
            'post_id' => $this->post->id,
            'post_title' => $this->post->title,
            'user_id' => $user->id
        ];
    }
}
补充说明
  • 哪怕你开启了通知队列,上述逻辑依然有效,Laravel 会自动在队列消费时把对应用户实例传入通知方法。
  • 该写法性能比手动循环发送更高,框架会自动优化多收件人的投递逻辑,也支持批量存储数据库通知等批量操作优化。

内容的提问来源于stack exchange,提问作者Орлов Владлен

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 16:06:04