Php 检查Laravel中的令牌是否过期
我有带列的表令牌:Php 检查Laravel中的令牌是否过期,php,laravel,Php,Laravel,我有带列的表令牌:user\u id,token,expires\u at 例如: 我有代币:12345,给我,他的有效期是:2018-06-05 当我生成新令牌时,我最多生成7天 如何在模型中检查此项 我尝试在模型中使用范围: public function scopeExpired($query) { return $this->where('expires_at', '<=', Carbon::now())->exists(); } 公共函数作用域已过期($qu
user\u id
,token
,expires\u at
例如:
我有代币:12345,给我,他的有效期是:2018-06-05
当我生成新令牌时,我最多生成7天
如何在模型中检查此项
我尝试在模型中使用范围:
public function scopeExpired($query) {
return $this->where('expires_at', '<=', Carbon::now())->exists();
}
公共函数作用域已过期($query){
return$this->where('expires_at',”我一直都是这样做的。请注意,您需要将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;
}
我得到false。我的令牌有效期为:2018-06-05。但今天是2018-05-29。我需要得到true,但不是false。false-过期。因此,将方法名称更改为tokenNotExpired
,并将
更改为code>
?请注意,使用否定的方法名称会让人困惑。您的评论告诉我,我的答案是正确的(您自己的代码可能会这样做),但您只是希望得到不同的结果。是的。非常感谢没有问题!仔细想想,您还可以将该方法重命名为tokenValid()
,这非常清楚,并给出了您期望的结果:)
$validToken = $user->tokenExpired();
// Or realistically
if ($user->tokenExpired()) {
// Do something
}