【问题标题】:Laravel: skip via database notificationLaravel:通过数据库通知跳过
【发布时间】:2018-11-05 14:36:07
【问题描述】:

我正在尝试通过Email 发送显式通知,仅使用为['mail', 'database'] 配置的通知类

Notification::route('mail', $shopadmin->email)->notify(new ShopadminCreated($model));

但它仍然进入toArray()方法并产生错误。

原因是,我正在使用同一个类通过电子邮件重新通知,但这次不需要创建数据库条目。

【问题讨论】:

    标签: php laravel notifications


    【解决方案1】:

    解决方案:

    在偶然发现通知文档之后。我尝试了this block 的代码并通过以下修改实现:

    ShopadminCreated.php:

    ...
    public function via($notifiable)
    {
        return $notifiable->prefers_email ? ['mail'] : ['mail', 'database']; 
        //return ['mail', 'database'];
    }
    ...
    

    控制器:

    $data = $notification->data; // Array fetched from database
    $model = Admin::hydrate([$data])[0];
    $model->setAttribute('prefers_email', true);
    
    Notification::send($shopadmin, new ShopadminCreated($model));
    

    【讨论】:

    • 谢谢!这对我帮助很大!目前我正在使用这种方法来确定我们是否需要发送数据库或邮件通知:return $notifiable instanceof User ? ['database'] : ['mail'];.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-11
    • 2016-06-12
    • 2020-11-11
    • 2020-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多