根据旧记录的值从查询中获取新记录

时间:2018-11-12 02:13:09

标签: php mysql laravel

我有一个查询范围,可根据当前时间检查哪些匹配项必须添加到查询中。  如果该比赛中的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的状态。
  • 我正在使用计划任务,该任务从API获取更新的匹配信息。当API具有不同的值时,匹配状态会更新。
  • 一个比赛日有10场比赛

有关解决我的问题的任何提示?

1 个答案:

答案 0 :(得分:0)

$matches = Match::where('created_at', '>=', Carbon::now()->subDays(14)->toDateTimeString());

在这里您可以使用subDays()的值来显示前几天..i使用14天