如何检查 Laravel 中的最新行

How to check with latest row in Laravel

我正在尝试检查用户的 otp 代码是否正确。

我的User_Otptable结构如下。

编号 |代码 | user_id | created_at | updated_at

样本数据是:

编号 |代码 | user_id | created_at | updated_at

19 |第 1234 章27 | 10:12:26 | 10:12:26

20 | 1235| 27 | 10:12:27 | 10:12:27

21 |第 1236 章27 | 10:12:28 | 10:12:28

我只想允许用户在输入 1236 作为 otp 代码时验证,因为这是他尝试重新发送 otp 代码时的最新代码。

我使用下面的代码来实现这个但没有工作:

$userOtp = UserOtp::where('code', request('code'))->where('user_id', request('user_id'))->latest('created_at')->first();
if ($userOtp) {
    // verified
}

latest 函数只对结果排序,不过滤。这意味着如果代码存在,你总是会得到一个结果,你可以这样做:

$userOtp = UserOtp::where('user_id', request('user_id'))->latest('created_at')->first();
if ($userOtp->code === request('code')) {
    // verified
}