我每天需要向多个用户发送电子邮件。 我的代码是这样的。 它也有效,但我误解了。
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));
}
但是如果我这样编码,只有一个用户收到电子邮件。
我不明白,为什么这会有所不同。 如果您能解释一下这一点,请。
“旧”代码触发了Notification::send事件两次,一次针对接收者,一次针对顾问。
您的“新”代码只会为接收者触发一次,因此顾问不会收到电子邮件通知。
现在我可能会因为缺乏更多信息而理解你的代码错误,但如果你想将通知发送到 $advisor->clients,你不需要循环它们并创建一个新数组,事实上,Notification::send 期望一个集合
就这样做:
foreach($advisors as $advisor) {
if (count($advisor->clients) > 0) {
Notification::send($advisor->clients, new DailyEmail($advisor));
}
}