2015-05-13 70 views
0

我搜遍了谷歌,但無法找到解決我的問題。 所以我有這個系統,人們可以在特定的時間設置任務。比較時間與symfony2

當時間已經是一個任務,我應該拋出一個錯誤,讓人知道 時間已經保留,它不會被寫入數據庫。 但由於某種原因,我無法做到這一點。

我認爲這個問題與做if語句

這是我的嘗試:http://pastebin.com/iA3RF6Mw

非常感謝:)

+0

爲了避免一些破碎的鏈接(在未來),使這個問題幾乎毫無用處爲其他用戶提供這種類型的問題,您需要直接的問題裏面隔離並粘貼所有相關的代碼 –

回答

0

很難趕上整個邏輯,但它肯定是錯誤的什麼你這樣做:

$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(); 
} 
1

[固定]

我做了一個新的類蒙山一堆的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; 
    } 

}