Laravel 5.8 ошибка уведомления по требованию Вызов функции-члена create () в null - PullRequest
0 голосов
/ 11 марта 2019

Когда я делаю это, пользователь получает электронную почту без ошибок:

Notification::send($user, new TicketNotification($details));

Но, когда я делаю это, пользователь также получает электронную почту, но с ошибкой на скриншоте ниже

Notification::route('mail', 'email_of_non-db_user')->notify(new TicketNotification($details));

Ошибка: вызов функции-члена create () со значением NULL

Есть идеи, почему?Как я могу избежать этой ошибки?

Мне нужно использовать уведомление по требованию, потому что мне нужно отправить уведомление кому-то, кто не хранится как «пользователь».

Ответы [ 2 ]

0 голосов
/ 12 марта 2019

Спасибо, Джинеш, твой ответ работает.

Извините, Тамер, я должен был опубликовать весь код с самого начала.

Раньше это было:

return ['mail','database']; 

Теперь только:

return ['mail'];  

Тогда больше нет ошибок.

Вот мой TicketNotification, который сделал ошибку:

<?php
namespace App\Notifications;

use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Notification;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;

class TicketNotification extends Notification
{
    use Queueable;

    private $details;

    /**
     * Create a new notification instance.
     *
     * @return void
     */
    public function __construct($details)
    {
        $this->details = $details;
    }

    /**
     * Get the notification's delivery channels.
     *
     * @param  mixed  $notifiable
     * @return array
     */
    public function via($notifiable)
    {
        return ['mail','database'];
    }

    /**
     * Get the mail representation of the notification.
     *
     * @param  mixed  $notifiable
     * @return \Illuminate\Notifications\Messages\MailMessage
     */
    public function toMail($notifiable)
    {
        return (new MailMessage)
                    ->subject($this->details['subject'])
                    ->greeting($this->details['title'])
                    ->line($this->details['body'])
                    ->line($this->details['links'])
                    ;
    }

    /**
     * Get the array representation of the notification.
     *
     * @param  mixed  $notifiable
     * @return array
     */
    public function toDatabase($notifiable)
    {
        return [
            'order_id' => $this->details['order_id']
        ];
    }
}
0 голосов
/ 12 марта 2019

я думаю попробуйте это

в TicketNotification метод обновления via с этим только для отправки на почту.

Но вы также сохранили уведомление в базе данных ..

/**
 * Get the notification's delivery channels.
 *
 * @param  mixed  $notifiable
 * @return array
 */
public function via($notifiable)
{
    return ['mail'];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...