Php Laravel 5.1-检查访问者是否已经访问了配置文件(unix时间戳)
我有一个包含以下列的表Php Laravel 5.1-检查访问者是否已经访问了配置文件(unix时间戳),php,laravel,Php,Laravel,我有一个包含以下列的表 id(配置文件id)int(10) 观众(访客id)int(10) ip(访客ip)int(10) ts(unix时间戳)int(10) 现在,我想询问访客x今天是否访问了概要文件y 我的想法是,我想做这样的事情 public function hasVisitToday(Profile $profile) { $dt = Carbon::now(); if(ViewTrack::where('id', $profile)->where('vi
- id(配置文件id)int(10)
- 观众(访客id)int(10)
- ip(访客ip)int(10)
- ts(unix时间戳)int(10)
public function hasVisitToday(Profile $profile)
{
$dt = Carbon::now();
if(ViewTrack::where('id', $profile)->where('viewer', $visitor)->whereDate('ts', $dt->today())->first())
return true;
return false;
}
该项目使用Laravel 5.1,其中一个主要问题是,数据库将时间戳存储为int列中的“unix时间戳”,而不是时间戳列
我正在寻找处理这件事的最佳方法
if(ViewTrack::where('id', $profile)
->where('viewer', $visitor)
->where('ts', '>=', $dt->startOfDay()->timestamp())
->count())
如果Unix时间戳的格式相同,您应该能够比较它们
我倾向于同意上面的评论,我希望它是人类可读的格式,这样我就可以看到我是否得到任何奇怪的日期
如果你有什么有趣的事情,确保你的服务器、MySQL服务器和laravel配置时区都匹配。谢谢Zoe,
但我选择whereBetween语句,这是我的解决方案
$carbon = Carbon::now();
$start = Carbon::now()->startOfDay();
$visit = ViewTrack::where('id', $this->id)
->where('viewer', $visitor->id)
->whereBetween('ts', [$start->timestamp , $carbon->timestamp])
->get();
if($visit->count() > 0)
return true;
return false;
是时候改变结构了,应该是
timestamp
而不是这是真的,但这不是我的决定。不知道是谁投了反对票——OP你有机会尝试这个代码吗?应该有效!你有没有理由检查他们现在是否访问了这个配置文件?你可以使用count而不是get()要在不获取资源集合的情况下获取计数,请执行以下操作:)