我遇到的情况是我向多个用户发送通知,过去我使用过这段代码:
foreach ($users as $user) {
$user->notify(new StaffNotify($dirtyAttributes, $user));
}
如果用户有一个player_id ,我会检查该通知内部
public function via($notifiable)
{
if ($this->user->player_id) {
return [OneSignalChannel::class, 'mail'];
} else {
return ['mail'];
}
}
(对于OneSignal)如果他有,我也会在他们的手机上发送推送通知。
但是这个新代码:
\Notification::send($users, new StaffNotify($dirtyAttributes));
这要好得多,因为我的服务器上只有1个请求而不是250个。我不知道如何检查用户是否有player_id,因为它的工作方式不同。
有人知道在发送通知之前如何检查用户吗?
答案 0 :(得分:2)
您不必将用户作为参数传递,您已经将其提供给$ notifiable,您可以查看您想要的内容。
public function via($notifiable)
{
if ($notifiable->player_id) {
return [OneSignalChannel::class, 'mail'];
} else {
return ['mail'];
}
}