find( $item['space_id'] ); if ($parkingSpace) { $item['floor'] = AdminFloor::getName( $parkingSpace['floor_id'] ); $item['number'] = $parkingSpace['number']; $item['space_type'] = ParkingSpaceType::getName( $parkingSpace['space_type_id'] ); $item['space_attr'] = ParkingSpaceAttributes::getAttr( $parkingSpace['space_attr_id'] ); } $item['rate'] = rtrim($item['rate'], ' ') . '%'; $format = $item['date_type'] == 1 ? 'Y/m/d H:i' : 'Y/m/d'; $item['start_time'] = date($format, strtotime($item['start_time'])); $item['end_time'] = date($format, strtotime($item['end_time'])); unset($item['space_id'], $item['date_type']); return $item; } /** * @param $parents * @return Builder */ public function searchQuery($parents): Builder { $query = ParkingUtilizationRate::query(); $start_time = $parents['start_time'] ?? get_datetime('date') . ' 00:00:00'; $ent_time = $parents['end_time'] ?? get_datetime('date') . ' 23:59:59'; $start_date = get_datetime('date', strtotime($start_time)); $end_date = get_datetime('date', strtotime($ent_time)); $date_type = $start_date == $end_date ? 1 : 2; $query->where('date_type', $date_type); $query->where('start_time', '>=', $start_time); $query->where('end_time', '<=', $ent_time); $spaceIdsWhere = []; if (isset($parents['floor_id']) && $parents['floor_id']) { $spaceIdsWhere['floor_id'] = $parents['floor_id']; } if (isset($parents['number']) && $parents['number']) { $spaceIdsWhere['number'] = $parents['number']; } if (isset($parents['parking_space_type']) && $parents['parking_space_type'] ) { $spaceIdsWhere['space_type_id'] = $parents['parking_space_type']; } if ($spaceIdsWhere) { $spaceIds = ParkingSpace::query()->where($spaceIdsWhere)->pluck( 'id' ); if ($spaceIds) { $query->whereIn('space_id', $spaceIds); } else { $query->where('id', 0); } } $query->orderBy('id', 'desc'); return $query; } }