我开发了一个小型的事件系统。通过创建新事件,可以在将来设置事件startdate。
在这种情况下,我试图向该用户发送通知,该事件的参与者是该事件的开始。我怎么解决这个问题?
我尝试了这样的安排和自己的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();
}
但是,是的,所以通知每次都会发出......不是一个好的解决方案。当事件startdate从未来切换到现在时,我只需要它一次。
你知道吗?非常感谢提前!!此致
答案 0 :(得分:0)
就个人而言,我只想在数据库中创建一个新字段,指示您是否发送了通知。如果您没有,并且开始日期是现在之后您想要发送通知并将标志设置为1 / true。
尽管如此,您创建的解决方案并不是最佳/最佳的解决方案,因为现在您可以在每个请求中查询数据库。更好的方法是创建一些CRON工作来进行永久性检查。
有关详细信息,请查看以下内容: https://laravel.com/docs/5.2/scheduling
这将为您提供一些基本信息,说明您需要做些什么才能进行某些操作。您可能还想了解Artisan Commands 所以你可以每x分钟运行一次。