我有一个查询范围,可根据当前时间检查哪些匹配项必须添加到查询中。
如果该比赛中的start_date
在这个星期二与下一个星期二之间,并且他们还需要status
的{{1}}字段,则会显示比赛。
当比赛日结束时,必须加载一组新的比赛。可以是星期日或星期一。现在,我注意到下一个比赛日将从11月24日开始,这意味着在11月13日星期二,不会在查询中添加任何匹配项。如果我仍然希望在上一场比赛结束后的第二天显示即将到来的比赛,那么与时间打交道将不是一种有用的方法。
我的目标是在所有当前比赛结束后始终添加新的即将到来的比赛。
代码
查询
SCHEDULED
根据时间获取正确匹配项的范围
$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
的状态。有关解决我的问题的任何提示?
答案 0 :(得分:0)
$matches = Match::where('created_at', '>=', Carbon::now()->subDays(14)->toDateTimeString());
在这里您可以使用subDays()的值来显示前几天..i使用14天