管理者が新しい期間を作成できるページがあります。管理者が新しい期間を追加したい場合、別の期間がまだないかどうかを確認したいと思います。
これは私の現在のコードですが、ドクトリンのように機能しない<=
と思いますか?>=
$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 の管理者にあります。