['prescription_id', 'fulfillment_status'], '%like%' => ['order_no'], ]; } public function lists(): array { $query = PrescriptionOrder::where($this->searchWhere)->whereNull('delete_time'); if (!PrescriptionOrderLogic::canSeeAllPrescriptionOrders($this->adminInfo)) { $diagIds = Diagnosis::where('assistant_id', $this->adminId)->whereNull('delete_time')->column('id'); $query->where(function ($q) use ($diagIds) { $q->where('creator_id', $this->adminId); if ($diagIds !== []) { $q->whereOr('diagnosis_id', 'in', $diagIds); } }); } $lists = $query ->order('id', 'desc') ->limit($this->limitOffset, $this->limitLength) ->select() ->toArray(); foreach ($lists as &$item) { PrescriptionOrderLogic::maskInternalCostIfNeeded($item, $this->adminInfo); $item['linked_pay_order_count'] = (int) PrescriptionOrderPayOrder::where( 'prescription_order_id', (int) ($item['id'] ?? 0) )->count(); } unset($item); return $lists; } public function count(): int { $query = PrescriptionOrder::where($this->searchWhere)->whereNull('delete_time'); if (!PrescriptionOrderLogic::canSeeAllPrescriptionOrders($this->adminInfo)) { $diagIds = Diagnosis::where('assistant_id', $this->adminId)->whereNull('delete_time')->column('id'); $query->where(function ($q) use ($diagIds) { $q->where('creator_id', $this->adminId); if ($diagIds !== []) { $q->whereOr('diagnosis_id', 'in', $diagIds); } }); } return (int) $query->count(); } }