order(['record_date DESC', 'id DESC'])->fetchAll(); } public function getById($id) { return $this->where(['id = :id'], [':id' => $id])->fetch(); } public function getByDateRange($startDate, $endDate, $type = '') { $where = 'record_date >= :start AND record_date <= :end'; $params = [':start' => $startDate, ':end' => $endDate]; if ($type) { $where .= ' AND type = :type'; $params[':type'] = $type; } return $this->where([$where], $params)->order(['record_date DESC', 'id DESC'])->fetchAll(); } public function getSummary($startDate, $endDate) { $sql = "SELECT type, SUM(amount) AS total, COUNT(*) AS cnt FROM " . $this->getTable() . " WHERE record_date >= :start AND record_date <= :end GROUP BY type"; $stmt = $this->pdo->prepare($sql); $stmt->execute([':start' => $startDate, ':end' => $endDate]); return $stmt->fetchAll(); } public function getCount() { $sql = 'SELECT COUNT(*) AS cnt FROM ' . $this->getTable(); $stmt = $this->pdo->prepare($sql); $stmt->execute(); $row = $stmt->fetch(); return (int)($row['cnt'] ?? 0); } }