룸 예약을 위해 laravel에서 프로젝트를 진행했습니다. 날짜를 선택할 수있는 캘린더가 있습니다. 예약 날짜가 여름인지 겨울인지 확인해야합니다. 계절이 아니라면 "계절의 시간이 아니 어서 미안"이라는 메시지를 보여주세요.예약 날짜를 확인하는 방법은 여러 시즌의 계절 시간대에 있습니까?
나는 약간의 코드를 시도했습니다. 이 코드는 테이블에 항목이 하나만있는 경우 작동합니다. 아래에 나와있는 세부 사항을 확인하고 도와주십시오. 감사.
시즌 (테이블)
id summer summer_open summer_close winter winter_open winter_close hotel
1 2018 2018-05-01 2018-09-20 2017 2017-11-01 2018-04-20 1
2 2019 2019-05-01 2019-09-20 2018 2018-11-01 2019-04-20 1
3 2018 2018-05-01 2018-09-20 2017 2017-11-01 2018-04-20 2
4 2019 2019-05-01 2019-09-20 2018 2018-11-01 2019-04-20 2
코드
<?php
protected function generateDates($now, $end){
$period = new DatePeriod(
new DateTime($now),
new DateInterval('P1D'),
new DateTime($end)
);
return $period;
}
public function checkAvailability(Request $request){
$dateBegin = $request->dateFrom //2019-09-17;
$dateEnd = $request->dateTo //2019-09-22;
/* generating dates b/w two dates */
$generateBookingDates = $this->generateDates($dateBegin, $dateEnd);
/* selecting seasons */
$seasons = Season::where('hotel', $request->hotelId)->get();
foreach ($generateBookingDates as $key => $generateBookingDate) {
$generateBookingDat = $generateBookingDate->format('Y-m-d'); //2019-09-17, 2019-09-18, 2019-09-19, 2019-09-20, 2019-09-21
/* Checking season begin */
foreach($seasons as $season) {
if(($generateBookingDat >= ($season->summer_open)->format('Y-m-d')) && ($generateBookingDat < ($season->summer_close)->format('Y-m-d')))
{
print_r($generateBookingDat. ' booked on summer season ');
}
elseif(($generateBookingDat >= ($season->winter_open)->format('Y-m-d')) && ($generateBookingDat < ($season->winter_close)->format('Y-m-d')))
{
print_r($generateBookingDat. ' booked on winter season ');
}
else {
print_r($generateBookingDat. ' Sorry not a season time ');
}
}
/* Checking season end*/
}
}
?>
테이블에 항목이 여러 개있을 때 어떤 문제가 발생합니까? – Geshode
@Geshode, 둘 이상의 항목이있는 경우 매번 '죄송합니다. 시즌 시간이 없습니다.'가 표시됩니다. –
당신은 분명히 시즌이 끝났습니다 –