FieldType::NUMBER, self::FIELD_PARKING_NAME => FieldType::SINGLE_LINE_TEXT, self::FIELD_ROOM_NO => FieldType::SINGLE_LINE_TEXT, self::FIELD_SEASON_TICKET_SEQ_NO => FieldType::SINGLE_LINE_TEXT, self::FIELD_VEHICLE_NO => FieldType::SINGLE_LINE_TEXT, self::FIELD_REGISTER_NO => FieldType::SINGLE_LINE_TEXT, self::FIELD_CONTRACT_START_DATE => FieldType::DATE, self::FIELD_CONTRACT_END_DATE => FieldType::DATE, self::FIELD_CONTRACT_AMOUNT => FieldType::NUMBER, self::FIELD_STUDENT_LICENSE_IMAGES => FieldType::FILE, self::FIELD_OTHER_LICENSE_IMAGES => FieldType::FILE, self::FIELD_STUDENT_LICENSE_IMAGES_UPLOAD_DATETIME => FieldType::DATETIME, self::FIELD_OTHER_LICENSE_IMAGES_UPLOAD_DATETIME => FieldType::DATETIME, self::FIELD_STUDENT_LICENSE_EXPIRES_DATE => FieldType::DATE, self::FIELD_OTHER_LICENSE_EXPIRES_DATE => FieldType::DATE, ]; protected const FIELD_NAMES = [ ...parent::FIELD_NAMES, self::FIELD_SEASON_TICKET_SEQ_NO => 'season_ticekt_contract_record_no', self::FIELD_PARKING_NAME => 'parking_name', self::FIELD_ROOM_NO => 'room_no', self::FIELD_VEHICLE_NO => 'vehicle_no', self::FIELD_REGISTER_NO => 'register_no', self::FIELD_CONTRACT_START_DATE => 'contract_start_date', self::FIELD_CONTRACT_END_DATE => 'contract_end_date', self::FIELD_CONTRACT_AMOUNT => 'contract_amount', self::FIELD_STUDENT_LICENSE_IMAGES_UPLOAD_DATETIME => 'student_license_images_upload_datetime', self::FIELD_OTHER_LICENSE_IMAGES_UPLOAD_DATETIME => 'other_license_images_upload_datetime', ]; public function getParking(): Parking { return Parking::findByParkingName($this->parkingName); } public function getCustomer(): Customer { return Customer::findByCustomerCode($this->customerCode); } }