Уведомления Laravel - Очередь ТОЛЬКО для метода toMail?

Я настроил уведомления Laravel, и пока все хорошо. Моя настройка такова, что я отправляю два уведомления: «почта» и «база данных». Я планирую иметь уведомление базы данных, чтобы я мог где-нибудь отобразить уведомление и позволить пользователю очистить его.

Проблема в том, что когда я ставлю в очередь весь класс Noitification, как и ожидалось, все ставится в очередь ... так что это означает, что в очередь также ставятся даже уведомления базы данных. Я хотел бы, чтобы в очередь помещалась только часть «почты», а часть базы данных мгновенно сохранялась в базе данных. Это возможно?

Вот класс на данный момент.

<?php

namespace App\Notifications;

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

class ViewedDocument extends Notification implements ShouldQueue
{
    use Queueable;

    protected $document;


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

    /**
     * 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)
                    ->line('The introduction to the notification.')
                    ->action('Notification Action', url('/'))
                    ->line('Thank you for using our application!');
    }

    /**
     * Get the array representation of the notification.
     *
     * @param  mixed  $notifiable
     * @return array
     */
    public function toArray($notifiable)
    {
        return [
            'document_id' => $this->document->id,
            'document_title' => $this->document->title
        ];
    }


}

... И я вызываю это где-то в контроллере ...

// notification
Notification::send(User::find($document->created_by['user_id']), new ViewedDocument($document));

Спасибо

лучше создать отдельное уведомление, одно для mail и другое для database, и не добавлять очередь в уведомление database

rkj 18.07.2018 07:29

хммм, это единственный способ добиться этого?

Kenny 18.07.2018 09:58

@Kenny Привет, тебе это удается? У меня такая же ситуация, как и у вас. Надеюсь, можно объявить все в одном файле уведомлений. Если нам нужно разделить его на 2 разных файла. Следовательно, нам нужно изменить queue_driver на базу данных, верно?

Drew 13.01.2021 11:44
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
3
489
0

Другие вопросы по теме