관리자가 새로운 기간을 만들 수있는 페이지가 있습니다. 이제 관리자가 새로운 기간을 추가하려고 할 때 이미 다른 기간이 없는지 확인하고 싶습니다.다른 기간에 날짜가 이미 있는지 확인하십시오.
이것은 현재 코드이지만, doctrine에서와 같이 <=
과 >=
이 작동하지 않습니다. 내 데이터베이스에서
$formMapper->getFormBuilder()->addEventListener(FormEvents::PRE_SUBMIT, function(FormEvent $event) {
try {
$from = str_replace('/', '-', $event->getData()['from']);
$to = str_replace('/', '-', $event->getData()['to']);
$dateFrom = new \DateTime($from, new \DateTimeZone('Europe/Amsterdam'));
$dateFrom = $dateFrom->format('Y-d-m');
$dateTo = new \DateTime($to, new \DateTimeZone('Europe/Amsterdam'));
$dateTo = $dateTo->format('Y-d-m');
$query = $this->getModelManager()->createQuery('PeriodeBundle:Periode', 'p');
$query->select()
->where(':from = p.from')
->andWhere(':to = p.to')
->setParameter('from', $dateFrom)
->setParameter('to', $dateTo);
$data = $query->execute();
if (count($data) > 0) {
$event->getForm()->addError(new FormError('This period overwrites another existing period ('
. $data[0]->getFrom()->format('d/m/Y') . ' to '
. $data[0]->getTo()->format('d/m/Y') . ')'));
}
} catch (\Exception $e) {
$event->getForm()->addError(new FormError('Date not valid'));
}
});
내가 여러 기간은 다음과 같이 단순화 : period_id, from, to
누군가가 올바른 방향으로 날 포인트? 이미 존재하는 마침표를 만들 때 내 데이터가 NULL이고 먼 미래에 마침표를 추가하면 모든 행의 결과가 표시됩니다. 약 lte
과 gte
에 대해 읽었지 만이 코드에서이를 통합하는 방법을 잘 모릅니다.
이 코드는 내 PeriodBundle의 내 관리자에게 있습니다. 다음은 일반적인 형태의 예입니다 .. 내가 소나타 양식 작동 방법을 모르는
$formMapper->getFormBuilder()->addEventListener(FormEvents::PRE_SUBMIT, function(FormEvent $event) {
try {
$from = str_replace('/', '-', $event->getData()['from']);
$to = str_replace('/', '-', $event->getData()['to']);
$dateFrom = new \DateTime($from, new \DateTimeZone('Europe/Amsterdam'));
$dateFrom = $dateFrom->format('Y-d-m');
$dateTo = new \DateTime($to, new \DateTimeZone('Europe/Amsterdam'));
$dateTo = $dateTo->format('Y-d-m');
$periods_list=$this->getModelManager()->getRepository(YourClassPath)->findBy(array('from'=>$dateFrom,'to' =>$dateTo));
if (sizeof($periods_list) > 0) {
$event->getForm()->addError(new FormError('This period overwrites another existing period ('
. $data[0]->getFrom()->format('d/m/Y') . ' to '
. $data[0]->getTo()->format('d/m/Y') . ')'));
}
} catch (\Exception $e) {
$event->getForm()->addError(new FormError('Date not valid'));
}
});
위대한 답변, 감사합니다! – Matheno