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();
}
Но да, поэтому уведомление будет отправляться каждый раз.. не очень хорошее решение. Они мне нужны только один раз, когда событие дата начала переключается с будущего на настоящее.
У вас есть идея? Заранее большое спасибо!!
С уважением
1 answers
Лично я бы просто создал новое поле в базе данных, которое указывало бы, отправляли ли вы уведомления. Если вы этого не сделали, и дата начала после этого, вы хотите отправлять уведомления и установить флажок 1/true.
Тем не менее, созданное вами решение не является лучшим/наиболее производительным, так как теперь вы будете запрашивать базу данных при каждом отдельном запросе. Лучше было бы создать какое-нибудь задание CRON, чтобы периодически проверять наличие такой вещи.
Для получения дополнительной информации проверьте это из: https://laravel.com/docs/5.2/scheduling
Это предоставит вам некоторую базовую информацию о том, что вам нужно сделать, чтобы периодически совершать некоторые действия.Вы также можете прочитать о Командах ремесленников , чтобы вы могли запускать их каждые x минут.