У меня есть таблица «Score» со следующими значениями
id user_id score created_at updated_at
43 33 88 2020-02-23 00:00:00 NULL
44 33 89 2020-02-24 00:00:00 NULL
45 33 42 2020-02-24 00:00:00 NULL
46 33 86 2020-02-25 00:00:00 NULL
47 33 100 2020-02-04 00:00:00 NULL
Я пытаюсь напечатать наивысшую оценку конкретного пользователя за текущую неделю. Я использую следующий код.
$week = GameScore::whereDate('created_at', '>=', Carbon::now()->startOfWeek()->format('Y-m-d H:i:s'))
->whereDate('created_at', '<=', Carbon::now()->endOfWeek()->format('Y-m-d H:i:s'))
->where('user_id', $user->id)
->orderBy('score','desc')
->limit(1)
->first();
Когда я запускаю приведенный выше код, я получаю 86.
"result": {
"id": 46,
"user_id": 33,
"score": 86,
"created_at": "2020-02-24 18:30:00", //this date is not correct for score 86 as per the table
"updated_at": null
}
Но если я выполняю тот же запрос в mysql Я получаю 89, и в соответствии с моим требованием 89 должен быть ответом, потому что 89 - это самый высокий балл пользователя на этой неделе до настоящего времени.
mySql запрос, который я выполняю для вышеуказанного кода
select * from `scores` where date(`created_at`) >= '2020-02-24 00:00:00' and date(`created_at`) <= '2020-03-01 23:59:59' and `user_id` = 33 order by `score` desc limit 1