['remark', 'creator_name', 'updater_name'], ]; } private function baseQuery() { $query = AccountCost::where($this->searchWhere); if (!empty($this->params['start_date']) && !empty($this->params['end_date'])) { $query->whereBetween('cost_date', [$this->params['start_date'], $this->params['end_date']]); } elseif (!empty($this->params['start_date'])) { $query->where('cost_date', '>=', $this->params['start_date']); } elseif (!empty($this->params['end_date'])) { $query->where('cost_date', '<=', $this->params['end_date']); } return $query; } public function lists(): array { return $this->baseQuery() ->order(['cost_date' => 'desc', 'id' => 'desc']) ->limit($this->limitOffset, $this->limitLength) ->select() ->toArray(); } public function count(): int { return (int) $this->baseQuery()->count(); } public function extend(): array { $baseQuery = $this->baseQuery(); return [ 'total_amount' => round((float) $baseQuery->sum('amount'), 2), 'days_count' => (int) $baseQuery->count(), ]; } }