Laravel通知Facade在发送通知之前检查用户

时间:2017-05-04 15:33:02

标签: laravel notifications

我遇到的情况是我向多个用户发送通知,过去我使用过这段代码:

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,因为它的工作方式不同。

有人知道在发送通知之前如何检查用户吗?

1 个答案:

答案 0 :(得分:2)

您不必将用户作为参数传递,您已经将其提供给$ notifiable,您可以查看您想要的内容。

public function via($notifiable)
{
    if ($notifiable->player_id) {
        return [OneSignalChannel::class, 'mail'];
    } else {
        return ['mail'];
    }
}