'date']; } public function user(): BelongsTo { return $this->belongsTo(User::class); } // Catat kunjungan (abaikan jika hari ini sudah tercatat) public static function catat(int $userId): void { static::query()->insertOrIgnore([ 'tanggal' => today()->toDateString(), 'user_id' => $userId, 'created_at' => now(), ]); } // Ringkasan pengunjung hari ini, bulan ini, dan total (satu query) public static function ringkasan(): object { return static::query() ->selectRaw('count(*) filter (where tanggal = ?) as hari_ini', [today()->toDateString()]) ->selectRaw('count(distinct user_id) filter (where tanggal >= ?) as bulan_ini', [today()->startOfMonth()->toDateString()]) ->selectRaw('count(*) filter (where tanggal >= ?) as kunjungan_bulan_ini', [today()->startOfMonth()->toDateString()]) ->selectRaw('count(*) as total_kunjungan') ->selectRaw('count(distinct user_id) as total_pengguna') ->toBase() ->first(); } }