Мое приложение: Мое приложение позволяет пользователям прогнозировать результаты всех предстоящих футбольных матчей на следующий игровой день. Я получаю эти данные из API и сохраняю предстоящие игры в своей базе данных. Эти предстоящие игры имеют status
из Scheduled
. Теперь я хочу запускать cronjob каждые несколько минут, который проверяет, был ли статус этих совпадений изменен на in_play
или finished
, если это так, я хочу обновить status field
в моей базе данных для правильного соответствия в поле состояния от API.
Как я могу проверить, изменился ли статус, и изменить правильное соответствие в моей базе данных? У меня хранится match_id
, который может быть использован для этого?
Мой код:
updateStatus
работа
public function handle()
{
$this->updateStatus();
}
public function updateStatus() {
$this->getMatches();
// check if status has been changed from schedulded to 'in_play' or 'finished'
// update the match status of the right matches in my database
}
public function getMatches() {
$client = new Client();
$uri = 'http://api.football-data.org/v2/competitions/PL/matches/?matchday=12&season=2018&matches';
$header = ['headers' => ['X-Auth-Token' => 'My-token']];
$res = $client->get($uri, $header);
return json_decode($res->getBody()->getContents(), true);
}
getMatches
job (эта работа получает данные API и сохраняет их в базе данных)
public function handle()
{
$this->saveMatches();
}
public function saveMatches()
{
$matches = $this->getMatches();
collect($matches['matches'])
->each(function ($match, $key) {
$date = new DateTime($match['utcDate']);
Match::create([
'match_id' => $match['id'],
'homeTeam' => $match['homeTeam']['name'],
'awayTeam' => $match['awayTeam']['name'],
'status' => $match['status'],
'date' => $date->format('Y-m-d'),
'time' => $date->format('H:i'),
'matchday' => $match['matchday'],
'homeScore'=> $match['score']['fullTime']['homeTeam'],
'awayScore'=> $match['score']['fullTime']['awayTeam']
]);
});
}
public function getMatches()
{
$client = new Client();
$uri = 'http://api.football-data.org/v2/competitions/PL/matches/?matchday=12&season=2018&matches';
$header = ['headers' => ['X-Auth-Token' => 'My-token']];
$res = $client->get($uri, $header);
return json_decode($res->getBody()->getContents(), true);
}