繁体   English   中英

与symfony2比较时间

[英]compare time with symfony2

我在整个Google上进行了搜索,但找不到解决我问题的方法。 所以我有这个系统,人们可以在特定的时间设置任务。

当时间已经完成时,我应该抛出一个错误,让该人知道该时间已被保留,并且不会被写入数据库。 但是由于某种原因,我无法完成此任务。

我认为问题与if语句有关

这就是我尝试过的: http : //pastebin.com/iA3RF6Mw

非常感谢 :)

[固定]

我做了一堂新课,上面写了一堆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;
    }

}

很难理解整个逻辑,但是您做的事情肯定是错误的:

 $time_start = $em->getRepository("AppBundle:book")->findByName($form->get("timeStart") -> getViewData());

您按申请日期对“名称”进行查询

关于如何检查日期范围内的实体,您应该制作自己的存储库方法,例如

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM