Laravel 每天向多个用户发送电子邮件并附上时间表

问题描述 投票:0回答:1

我每天需要向多个用户发送电子邮件。 我的代码是这样的。 它也有效,但我误解了。

foreach($advisors as $advisor) {
    $receivers = [];
    foreach($advisor->clients as $client) {
        array_push($receivers, $client);
    }
    array_push($receivers, $advisor);

    if (count($receivers) > 0) {
        Notification::send($receivers, new DailyEmail($advisor));
    }
}

在我像下面这样编码之前。

foreach($advisors as $advisor) {
    $receivers = [];
    foreach($advisor->clients as $client) {
         array_push($receivers, $client);
    }

    if (count($receivers) > 0) {
         Notification::send($receivers, new DailyEmail($advisor));
    }
    Notification::send($advisor, new DailyEmail($advisor));
}

但是如果我这样编码,只有一个用户收到电子邮件。

我不明白,为什么这会有所不同。 如果您能解释一下这一点,请。

php laravel email schedule
1个回答
0
投票

“旧”代码触发了Notification::send事件两次,一次针对接收者,一次针对顾问。

您的“新”代码只会为接收者触发一次,因此顾问不会收到电子邮件通知。

现在我可能会因为缺乏更多信息而理解你的代码错误,但如果你想将通知发送到 $advisor->clients,你不需要循环它们并创建一个新数组,事实上,Notification::send 期望一个集合

就这样做:

foreach($advisors as $advisor) {
    if (count($advisor->clients) > 0) {
        Notification::send($advisor->clients, new DailyEmail($advisor));
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.