【问题标题】:how to send a collection or array to Notification facade如何将集合或数组发送到通知门面
【发布时间】:2019-10-24 05:21:59
【问题描述】:

我有一个集合,例如:

$users = 
collect([ (object) [ 'name' => 'user1', 'email' => 'user1@gmail.com' ], 
          (object) [ 'name' => 'user2', 'email' => 'user2@gmail.com' ] 
]);

您能否帮助我了解如何将集合发送到通知外观以便向这些用户发送电子邮件?

感谢您的帮助。

【问题讨论】:

  • Laravel 文档中有相当大的部分介绍了如何执行此操作。看看这个,然后可能会发布一些您尝试过的内容以及具体失败的内容。路线很容易理解,但发布您遇到的问题会让其他人帮助您。
  • 谢谢,我有一个邮件列表作为集合或数组,我想将它传递给 Notification,但 Notification 得到一个通知,是否存在将我的数组传递给 Notification 门面的方式?

标签: laravel laravel-5


【解决方案1】:

如果您询问如何发送到从列表中提取的集合,而不是当前用户,我认为如果您想使用 Notification 门面,您将需要创建用户或人员(至少暂时),因为它查找要从中发送的数据库。来自手册:

您可以通过 Notification 门面发送通知。这主要在您需要向多个应通知实体(例如用户集合)发送通知时很有用。要使用外观发送通知,请将所有可通知实体和通知实例传递给 send 方法。

要使其正常工作,您需要在User 型号或您选择的任何型号上使用use Notifiable。在数据库中创建新用户,然后将此集合发送到外观。如果您不想在通知发出后将它们保留在数据库中,您可以删除它们,但我无法从您的问题中看出问题所在。一旦你拥有了User 对象的集合,你就可以在存储的用户集合上调用通知门面:

Notification::send($users, new WhateverYourNotificationInstanceIsCalled($someNotification));

或者,如果您想为此设置一个结构,您可以创建一个新的“邀请”类型的东西,但无论哪种方式,您仍然在数据库中创建一些东西。它使您的用户模型保持清洁,但工作量也一样多。例如

 $invite = Invite::create([
    'name' => $request->get('name'),
    'email' => $request->get('email'),
    'token' => str_random(60),
]);

$invite->notify(new UserInvite());

【讨论】:

  • 非常感谢,好的,我的邮件列表是一个数组,其中包含大约 1000 封电子邮件,那么,我如何编写包含 1000 个邮件地址的邀请函?
  • 如果这是一个永久列表,请创建邀请(循环或使用带有 Invite::insert() 的正确格式的数组),然后按照上面的答案和有关如何使用通知的手册进行操作。
【解决方案2】:

它对我有用
我的站点中有一个 foreach 循环和 1000 个用户,每 10 个成员睡 2 秒然后继续 $users = Abonne::select('email')->where('active',1)->get()->pluck('email')->toArray();

        foreach ($tab as $i => $user) {
            Notification::route('mail', $user)->notify(new nletter());
               if ($i > 0 && $i % 10 == 0) {
                
                   sleep(2);
               }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-05
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    • 2011-09-10
    • 2020-01-31
    相关资源
    最近更新 更多