Создал по документации событие и слушатель, на момент создание новой записи в базе. Все работает и уведомления приходят на почту. Но как проверить что оно не выполняется вместе с пользователем в момент добавления, а отложенное?
Сделал так:
Слушательnamespace App\Listeners;
use App\Events\ElementWasAdded;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Support\Facades\Mail;
class EmailElementConfirmation implements ShouldQueue
{
use InteractsWithQueue;
public function __construct()
{
//
}
public function handle(ElementWasAdded $event)
{
//
$element = $event->element;
$section = $event->section;
Mail::send('emails.ElementWasAdded', array('element' => $element, 'section' => $section), function ($message) {
$message->from('info@site.ru', 'Заголовок письма');
$message->to('me@mail.com');
$message->subject('Добавлен элемент');
});
}
}
Событиеnamespace App\Events;
use App\Events\Event;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
class ElementWasAdded extends Event
{
use SerializesModels;
public $element;
public $section;
public function __construct($element, $section)
{
//
$this->element = $element;
$this->section = $section;
}
public function broadcastOn()
{
return [];
}
}
И в контроллереif($table->save()) {
$element_id = $table->id;
$section_id = "reviews_section";
Event::fire(new ElementWasAdded($element_id, $section_id));
}