我遇到了一种情况,我正在向多个用户发送通知,并且过去我使用过此代码:
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,因为这工作方式不同。
有人知道如何在发送通知之前检查用户吗?
最佳答案
您不必将用户作为参数传递,您已经将其包含在 $notifying 中,并且可以检查您想要的内容。
public function via($notifiable)
{
if ($notifiable->player_id) {
return [OneSignalChannel::class, 'mail'];
} else {
return ['mail'];
}
}
关于Laravel 通知外观在发送通知之前检查用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43787214/