我需要选择特定用户的每周最高得分。我正在使用Carbon,并且将Carbon startofWeek强制为SUNDAY,将endOfWeek强制为SATURDAY。
这是我的数据库数据
id user_id score created_at updated_at
43 33 88 2020-02-23 00:00:00 NULL
44 33 15 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::select(max('score')->where('created_at', '>=', Carbon::now()->startOfWeek(Carbon::SUNDAY))
->where('created_at', '<=', Carbon::now()->endOfWeek(Carbon::SATURDAY))
->where('user_id', $user->id)
->get();
根据我的数据,我需要得到88分,因为该分数是从2月23日(星期日)开始的,这是本周开始的,直到今天所有其他分数均不超过此分数。
$en = CarbonImmutable::now()->locale('en_US');
$ar = CarbonImmutable::now()->locale('ar');
// We still can force to use an other day as start/end of week
$start = $en->startOfWeek(Carbon::TUESDAY);
$end = $en->endOfWeek(Carbon::SATURDAY);
var_dump($ ar-> endOfWeek()-> format('Y-m-d H:i'));
为我工作
在您的代码中,比较时需要指定日期格式,
Carbon::now()->endOfWeek(Carbon::SATURDAY)->format('Y-m-d H:i:s');