У меня есть область запроса, которая проверяет, какие совпадения должны быть добавлены в запрос на основе текущего времени.
Соответствия будут отображаться, если start_date
из этого совпадения находится между этим вторником и следующим вторником, и им также нужно поле status
, равное SCHEDULED
.
Новый набор матчей должен быть загружен, когда тот игровой день подходит к концу. Это может быть воскресенье или понедельник. теперь я заметил, что следующий игровой день начнется 24 ноября, это означает, что во вторник 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
.
- Я использую запланированное задание, которое получает обновленную информацию о соответствии из API. Состояние совпадения обновляется, когда API имеет разные значения.
- В матче 10 матчей
Какие-нибудь советы по подходу к моей проблеме?