Laravel 获取 created_at 不早于 24 小时的行

kie*_*sky 3 eloquent php-carbon laravel-8

我需要获取数据库中满足某些条件的所有行。这些标准之一是不超过 24 小时。

我一直在尝试发布在 SO 上的不同解决方案,但似乎都不起作用。

我已经尝试过所有这些解决方案:

选择自 Laravel 创建以来超过 24 小时的模型

在Laravel中检索updated_at早于created_at 2小时的记录(雄辩)

获取创建日期早于 14 天的行

我没有收到任何错误,我可以在数据库中看到我有结果。这就是我的查询现在的样子:

$token = RefreshToken::where([['refresh', $refreshToken], ['valid', true], ['created_at', '<=', Carbon::now()->subDays(1)->toDateTimeString()]])->first();

Log::debug(($token));
Run Code Online (Sandbox Code Playgroud)

我想要获取第一个具有来自表单的刷新值、有效且在 24 小时内创建的令牌。

Kyl*_*leK 6

小于 24 小时的是:

['created_at', '>=', Carbon::now()->subHours(24)->toDateTimeString()]
Run Code Online (Sandbox Code Playgroud)

使用 >=,而不是 <=

还要确保在数据库中保存和选择它们时使用相同的时区。

旁注,1 天不是 24 小时(由于 DST,它可能是 23 或 25 小时,甚至南极洲是 22 和 26 小时)。如果可以的话,请在后端的任何地方使用 UTC。