我搜遍了谷歌,但無法找到解決我的問題。 所以我有這個系統,人們可以在特定的時間設置任務。比較時間與symfony2
當時間已經是一個任務,我應該拋出一個錯誤,讓人知道 時間已經保留,它不會被寫入數據庫。 但由於某種原因,我無法做到這一點。
我認爲這個問題與做if語句
這是我的嘗試:http://pastebin.com/iA3RF6Mw
非常感謝:)
我搜遍了谷歌,但無法找到解決我的問題。 所以我有這個系統,人們可以在特定的時間設置任務。比較時間與symfony2
當時間已經是一個任務,我應該拋出一個錯誤,讓人知道 時間已經保留,它不會被寫入數據庫。 但由於某種原因,我無法做到這一點。
我認爲這個問題與做if語句
這是我的嘗試:http://pastebin.com/iA3RF6Mw
非常感謝:)
很難趕上整個邏輯,但它肯定是錯誤的什麼你這樣做:
$time_start = $em->getRepository("AppBundle:book")->findByName($form->get("timeStart") -> getViewData());
你讓查找到 「姓名」 按日期fieled
以及關於如何在日期範圍檢查的實體,你應該讓自己的軟件庫法像
public function findInRange($timeStart, $timeEnd)
{
$qb->select('b')
->from('Book','b')
->add('where', $qb->expr()->between(
'b.date',
':from',
':to'
)
)
->setParameters(array('from' => $startDate, 'to' => $endDate));
$query = $qb->getQuery();
return $query->getResult();
}
[固定]
我做了一個新的類蒙山一堆的if else語句。
public function checkBooking($booking,$em){
$reservations = $em->getRepository("AppBundle:Applicant")->findBy(array("date" => $booking->getDate(),"room" => $booking->getRoom()));
$errors = 0;
$bookingTimeStart = $booking->getTimeStart()->format('H:i');
$bookingTimeEnd = $booking->getTimeEnd()->format('H:i');
foreach($reservations as $reservation){
$timeStart = $reservation->getTimeStart()->format('H:i');
$timeEnd = $reservation->getTimeEnd()->format('H:i');
if($bookingTimeStart >= $timeStart && $bookingTimeStart <= $timeEnd){
$errors++;
}
if($bookingTimeEnd >= $timeStart && $bookingTimeEnd <= $timeEnd){
$errors++;
}
if($bookingTimeStart <= $timeStart && $bookingTimeEnd >= $timeEnd){
$errors++;
}
}
$error = array();
if($errors > 0){
$error[] = "THis room is already occupied.";
}
if($bookingTimeEnd < $bookingTimeStart){
$error[] = "The end time cant be bigger than the begin time.";
}
if(count($error) == 0){
$em->persist($booking);
$em->flush();
return array();
}else{
return $error;
}
}
爲了避免一些破碎的鏈接(在未來),使這個問題幾乎毫無用處爲其他用戶提供這種類型的問題,您需要直接的問題裏面隔離並粘貼所有相關的代碼 –