检查令牌在Laravel中是否过期

Dum*_*tru 2 php laravel

我有一个列的表标记:user_idtokenexpires_at

例:

我有令牌:12345,对我来说,他过期于:2018-06-05

生成新令牌时,最多生成7天。

我该如何检查模型?

我试着做模型的范围:

public function scopeExpired($query) {
    return $this->where('expires_at', '<=', Carbon::now())->exists();
}
Run Code Online (Sandbox Code Playgroud)

但是没有用。总是假..

Loe*_*oek 6

我一直按照以下方式做这样的事情。请注意,您需要将该expires_at字段作为模型上的属性。

// Probably on the user model, but pick wherever the data is
public function tokenExpired()
{
    if (Carbon::parse($this->attributes['expires_at']) < Carbon::now()) {
        return true;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以从任何地方致电:

$validToken = $user->tokenExpired();

// Or realistically

if ($user->tokenExpired()) {
    // Do something
}
Run Code Online (Sandbox Code Playgroud)