我有一个查询范围,它根据当前的时间来检查哪些匹配必须添加到查询中。如果来自该匹配的start_date
位于本周二到下一个星期二之间,并且它们还需要status
字段SCHEDULED
,则将显示匹配。
当比赛日结束时,必须加载一组新的匹配。这可以是星期天,也可以是星期一。现在我注意到下一个比赛日将从11月24日开始,这意味着在11月13日星期二,查询中不会添加任何匹配项。如果我仍然希望在最后一场比赛结束后的第二天显示即将到来的比赛,那么处理时间将不是一种有用的方法。
我的目标是总是添加新的即将到来的比赛时,所有当前的比赛已经结束。
码
查询
$matches = Match::thisWeekScheduled()->get();
基于时间的正确匹配范围
public function scopeThisWeekScheduled($query) {
$start_date = now()->previous(Carbon::TUESDAY);
$end_date = now()->next(Carbon::TUESDAY);
return $query->whereDate('date','>', $start_date)->whereDate('date','<', $end_date)->where('status', 'SCHEDULED');
}
匹配迁移
Schema::create('matches', function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
$table->integer('match_id');
$table->string('homeTeam');
$table->string('awayTeam');
$table->string('status');
$table->dateTime('date');
$table->integer('matchday');
$table->integer('homeScore')->nullable();
$table->integer('awayScore')->nullable();
});
// last match of this matchday
// match_id = 233136
// homeTeam = Arsenal FC
// awayTeam = Wolverhampton Wanderers FC
// status = FINISHED
// date = 2018-11-11 16:30:00
// matchday = 12
// homeScore = 1
// awayScore = 1
// First upcoming match
// match_id = 233144
// homeTeam = Fulham FC
// awayTeam = Southampton FC
// status = SCHEDULED
// date = 2018-11-24 15:00:00
// matchday = 13
// homeScore = NULL
// awayScore = NULL
附加信息:
SCHEDULED
或FINISHED
。关于处理我的问题有什么建议吗?
发布于 2018-11-12 05:11:20
$matches = Match::where('created_at', '>=', Carbon::now()->subDays(14)->toDateTimeString());
在这里,您可以使用subDays()具有值,因为您希望显示前几天..i使用14天
https://stackoverflow.com/questions/53255201
复制相似问题