input('base_id'); $deviceType = $request->input('device_type'); $deviceColumn = $request->input('device_column'); //指定字段 } /** * 统计某个实验田下所有设备状态数量 */ public function typeStateNum(Request $request) { $regionId = $request->input('region_id', 0); $query = Device::query(); if($regionId){ $monitorIds = RegionMonitor::where('region_id', $regionId)->pluck('id')->toArray(); if(count($monitorIds) > 0){ $deviceIds = MonitorDevice::whereIn('monitor_id', $monitorIds)->pluck('id')->toArray(); $query->whereIn('id', $deviceIds); } } $query->groupBy('type')->groupBy('state'); $list = $query->select(DB::raw('type, state, count(1) as num '))->get(); $resData = []; foreach ($list as $item) { $resData[$item->type][$item->state] = $item->num; } //初始化数据; $data = []; foreach (Device::typeMap() as $typeKey => $typeName) { foreach (Device::stateMap() as $statusKey => $statusName) { $data[$typeKey][$statusKey] = $resData[$typeKey][$statusKey] ?? 0; } } return $this->json($data); } }