*/ static function get(string $customerCode): Collection { $ret = collect(); $query = SeasonTicketContract::getQuery() ->where(SeasonTicketContract::FIELD_CUSTOMER_CODE, $customerCode); $seasonTicketContracts = SeasonTicketContract::getAccess() ->some($query); $recordIds = []; foreach ($seasonTicketContracts as $seasonTicketContract) { $recordIds[] = $seasonTicketContract->getRecordId(); } $query = ParkingRoom::getQuery() ->whereIn(ParkingRoom::FIELD_SEASON_TICKET_CONTRACT_RECORD_NO, $recordIds); $parkings = ParkingRoom::getAccess() ->some($query); /** * @var Collection */ $parkingsBySeasonTicketContractRecordId = collect(); foreach ($parkings as $parking) { $parkingsBySeasonTicketContractRecordId->put($parking->getNumber(ParkingRoom::FIELD_SEASON_TICKET_CONTRACT_RECORD_NO), $parking); } /** * @var SeasonTicketContract $seasonTicketContract */ foreach ($seasonTicketContracts as $seasonTicketContract) { $parking = null; $parking = $parkingsBySeasonTicketContractRecordId->get($seasonTicketContract->getRecordId(), null); $ret->put($seasonTicketContract->getRecordId(), new SeasonTicketContractRepositoryData($seasonTicketContract, $parking)); } return $ret; } }