Laravel - 事件开始时发送通知
Laravel - Sending Notification when event starts
我开发了一个小事件系统。通过创建新活动,可以将活动开始日期设置为未来。
在这种情况下,我试图向用户发送通知,该事件的参与者在哪里,事件开始了。我该如何解决?
我尝试了类似这样的调度和自己的 ServiceProvider:
$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/true。
仍然,您创建的解决方案不是 best/most 性能,因为现在您将在每个请求时查询数据库。最好是创建一些 CRON 作业来定期检查此类事情。
有关更多信息,请查看:
https://laravel.com/docs/5.2/scheduling
这将为您提供一些基本信息,说明您需要做什么来定期制作一些 actions.You 可能还想阅读 Artisan Commands
所以你可以 运行 每 x 分钟一次。
我开发了一个小事件系统。通过创建新活动,可以将活动开始日期设置为未来。
在这种情况下,我试图向用户发送通知,该事件的参与者在哪里,事件开始了。我该如何解决?
我尝试了类似这样的调度和自己的 ServiceProvider:
$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/true。
仍然,您创建的解决方案不是 best/most 性能,因为现在您将在每个请求时查询数据库。最好是创建一些 CRON 作业来定期检查此类事情。
有关更多信息,请查看: https://laravel.com/docs/5.2/scheduling
这将为您提供一些基本信息,说明您需要做什么来定期制作一些 actions.You 可能还想阅读 Artisan Commands 所以你可以 运行 每 x 分钟一次。