我每天都需要向多个用户发送电子邮件。 我的代码是这样的。 它也可以,但是我误会了。
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));
}
但是,如果我这样编写代码,则只有一个用户收到电子邮件。
我不明白,为什么这样做不一样。 如果您能对此进行解释,请。
答案 0 :(得分:0)
“旧”代码触发两次Notification :: send事件,一次用于接收者,一次用于顾问。
您的“新”代码仅向接收者触发一次,因此顾问不会收到电子邮件通知。
现在我可能由于缺少更多信息而误解了您的代码,但是如果您想将通知发送给$ advisor->客户端,则不需要循环它们并创建一个新数组,实际上是Notification ::发送期望的收藏
只需:
foreach($advisors as $advisor) {
if (count($advisor->clients) > 0) {
Notification::send($advisor->clients, new DailyEmail($advisor));
}
}