Как настроить push уведомление Laravel 9 + Vue 3 + MySql

Рейтинг: 0Ответов: 1Опубликовано: 31.07.2023

На данный момент хочу сделать отправку уведомлений с сервера в vue-приложение. Необходимо за 3-2 дня до, допустим,дня рождения пользователя, информировать о скидке. Можно ли каким-то образом индивидуально создавать под каждого пользователя уведомление и также вызывать по расчетам до определенного дня.

Насколько я понимаю, для этого необходимо использовать Notifications в laravel, а затем в очереди отправлять эти уведомления. Но также я сомневаюсь, что может стоит использовать слушатели-события в laravel и производить данные манипуляции там. Или использовать все вместе. Так как я только начала изучать php и в частности laravel буду рада любой помощи в подсказке какого-либо паттерна действий при данной разработке задачи.

Ответы

▲ 0

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

Кратко: измените конфигурационные файлы Laravel, создадите таблицы jobs, failed_jobs, далее нужно создать Job (App/Jobs) который будет выполняться (dispatch), я бы рекомендовал отправлять в Job не объекты (к прим. User) а их id.

А так же если дата дня рождения изменилась вам нужно ещё раз добавить задачу в очередь, для проверки изменилась ли она - так же отправляйте её в Job

class AlertBirthdaySale implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    protected $user_id;
    protected $birthday;
    protected $sale;

    public function __construct($user_id, $birthday, $sale)
    {
        $this->user_id = $user_id;
        $this->birthday = $birthday;
        $this->sale = $sale;
    }

    public function handle()
    {
        $user = User::where(['id' => $this->user_id, 'birthday' => $this->birthday])->first();
        if ($user) {
            // Send notification
            SendNotification("Hello user, for your birthday sale is " . $this->sale . "%");
        }
    }
}