Получение новых записей из запроса на основе значений старых записей - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть область запроса, которая проверяет, какие совпадения должны быть добавлены в запрос на основе текущего времени. Соответствия будут отображаться, если 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 матчей

Какие-нибудь советы по подходу к моей проблеме?

1 Ответ

0 голосов
/ 12 ноября 2018

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

здесь Вы можете использовать значение subDays (), так как вы хотите показать предыдущие дни .. я использую в течение 14 дней

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...