Я настроил уведомления 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));
Спасибо
хммм, это единственный способ добиться этого?
@Kenny Привет, тебе это удается? У меня такая же ситуация, как и у вас. Надеюсь, можно объявить все в одном файле уведомлений. Если нам нужно разделить его на 2 разных файла. Следовательно, нам нужно изменить queue_driver на базу данных, верно?






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