我有一个自制的访问者计数器(有点)我正在使用pragmarx插件,但我自己获取数据。
当我计算一天中的所有内容时,没有问题,它会返回正确的值。但是当我试图获得每周,每月或每年的访问次数时,它会返回完全错误的数字。
这就是我获取图表的方式:
public function getVisitors()
{
$begin = Carbon::now()->startOfMonth();
$end = Carbon::now()->endOfMonth();
$stats = DB::table('tracker_sessions')
->whereRaw("created_at between '$begin' and '$end'")
->where('is_robot', '=', 0)
->groupBy(DB::raw('DATE_FORMAT(created_at,"%d-%m-%Y")'))
->orderBy(DB::raw('DATE_FORMAT(created_at,"%d-%m-%Y")'))
->get([
DB::raw('DATE_FORMAT(created_at,"%d-%m-%Y") as y'),
DB::raw('COUNT(DISTINCT client_ip) as b')
]
);
return $stats;
}
这就是我每周得到的所有内容:
public static function getVisitorsThisWeek()
{
$begin = Carbon::now()->startOfWeek();
$end = Carbon::now()->endOfWeek();
$stats = DB::table('tracker_sessions')
->whereRaw("created_at between '$begin' and '$end'")
->where('is_robot', '=', 0)
->count(DB::raw('DISTINCT client_ip'));
return $stats;
}
我在月份和年份都这样做,除非我将Carbon::now()->startOfWeek();
更改为Year
或Month
类型的碳。
我真的不知道我现在做错了什么?我已经尝试添加groupBy
和orderBy
,或者切换它们等等,但注意似乎有效。希望有人可以帮助我解决这个问题。