Laravel 6 База данных уведомлений не работает в производстве - PullRequest
2 голосов
/ 29 марта 2020

У меня есть уведомление базы данных, которое работает нормально на локальном компьютере. Он отправляет электронные письма, а также уведомление базы данных. Но когда я загрузил его в PRODUCTION, электронная почта (toEmail) отправляет электронную почту нормально, но уведомление базы данных (toDatabase) не работает. Я использовал Laraval Forge для развертывания приложения. Я не думаю, что это проблема с работой очереди, потому что электронная почта работает нормально.

class DBMailNewPaymentAddedgNotification extends Notification implements ShouldQueue
  {
     use Queueable;

public $payment;


public function __construct($payment)
{
    $this->payment = $payment;
}

/**
 * Get the notification's delivery channels.
 *
 * @param  mixed  $notifiable
 * @return array
 */
public function via($notifiable)
{
    return explode(',' ,$notifiable->notification_preference);
}

/**
 * Get the mail representation of the notification.
 *
 * @param  mixed  $notifiable
 * @return \Illuminate\Notifications\Messages\MailMessage
 */
public function toMail($notifiable)
{
    return (new MailMessage)
                ->subject('Nouvelle action sur le système.')
                ->line('Vous recevez cet e-mail car il y a une nouvelle notification dans le système')
                ->action('Veuillez vous connecter', url('/login'));
}


public function toDatabase()
{
    return [
        'title' => 'Nouveau paiement soumis',
        'category' => 'finance',
        'type' => 'added',
        'icon' => 'cash',
        'note_title' => 'Paiement '.$this->payment->ref_number.' soumis ',
        'note_desc' => 'par l\'utilisateur '.$this->payment->updatedBy->nom.' '.$this->payment->updatedBy->nom,
        'added_by_user_id' => $this->payment->updatedBy->id,
        'item_id' => $this->payment->id
    ];
}

.env QUEUE_CONNECTION=database // Is set to database in local as well as in production

И вот как я вызываю класс уведомлений в контроллере $users = User::wherePermissionIs('journaux-actions-paiement')->get(); $when = now()->addMinutes(2); $users->each->notify((new DBMailNewPaymentAddedgNotification($payment))->delay($when));

1 Ответ

2 голосов
/ 30 марта 2020

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

php artisan queue:listen

Кроме этого, это может быть только $notifiable->notification_preference, который не содержит правильного значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...