PageView::count(), 'viewsByDate' => PageView::select('view_date', DB::raw('count(*) as count')) ->groupBy('view_date') ->orderBy('view_date', 'desc') ->limit(30) ->get(), 'topPages' => PageView::select('path', DB::raw('count(*) as count')) ->groupBy('path') ->orderBy('count', 'desc') ->limit(10) ->get(), 'topReferrers' => PageView::select('referrer', DB::raw('count(*) as count')) ->whereNotNull('referrer') ->groupBy('referrer') ->orderBy('count', 'desc') ->limit(10) ->get(), 'browsers' => PageView::select('browser', DB::raw('count(*) as count')) ->groupBy('browser') ->orderBy('count', 'desc') ->get(), ]; } /** * Record a new pageview in the database. * * @param array $data Data for the pageview (path, referrer, browser, etc.). * @return PageView The recorded PageView model instance. */ public function recordPageview(array $data): PageView { return PageView::create($data); } }