modelFilterName; } public function primaryKey() { return 'patient_id'; } public function sortColumn() { return 'patient_id'; } public function listQuery() { $model = $this->getModel(); $filter = $this->getModelFilter(); $query = $this->query(); if ($this->withRelationships) { $query->with($this->withRelationships); } if ($filter) { $query->filter(request()->input(), $filter); } $query->select([ 'patient_id', DB::raw('count(1) as count'), DB::raw('sum(`origin_price`) as `origin_price`'), DB::raw('sum(`sell_price`) as `sell_price`'), DB::raw('min(`treat_at`) as `min_treat_at`'), DB::raw('max(`treat_at`) as `max_treat_at`'), ])->groupBy('patient_id'); $this->sortable($query); return $query; } public function list() { $query = $this->listQuery(); $list = (clone $query)->paginate(request()->input('perPage', 20)); $items = $list->items(); $total = $list->total(); $origin_price = (new PatientRecordService())->listQuery()->sum('origin_price'); $sell_price = (new PatientRecordService())->listQuery()->sum('sell_price'); return compact('items', 'total', 'sell_price', 'origin_price'); } }