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)
现在,我想询问访客x今天是否访问了概要文件y

我的想法是,我想做这样的事情

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()要在不获取资源集合的情况下获取计数,请执行以下操作:)