Laravel - Отправка уведомления при запуске события


Я разработал небольшую систему событий. Создавая новое событие, дату начала события можно установить на будущее.

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

Я попробовал что-то подобное с планированием и собственным поставщиком услуг:

$challenges = Auth::User()->challenges()->where('startdate', '<=', Carbon::now())->get();
        foreach($challenges as $challenge) {

            Notifynder::category('challenge.started')
                ->from(1)
                ->to(1)
                ->url(url("challenge/$challenge->slug"))
                ->send();

        }

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

У вас есть идея? Заранее большое спасибо!!

С уважением

Author: Machavity, 2015-12-30

1 answers

Лично я бы просто создал новое поле в базе данных, которое указывало бы, отправляли ли вы уведомления. Если вы этого не сделали, и дата начала после этого, вы хотите отправлять уведомления и установить флажок 1/true.

Тем не менее, созданное вами решение не является лучшим/наиболее производительным, так как теперь вы будете запрашивать базу данных при каждом отдельном запросе. Лучше было бы создать какое-нибудь задание CRON, чтобы периодически проверять наличие такой вещи.

Для получения дополнительной информации проверьте это из: https://laravel.com/docs/5.2/scheduling

Это предоставит вам некоторую базовую информацию о том, что вам нужно сделать, чтобы периодически совершать некоторые действия.Вы также можете прочитать о Командах ремесленников , чтобы вы могли запускать их каждые x минут.

 0
Author: Maksym Cierzniak, 2015-12-30 16:13:22