1

管理者が新しい期間を作成できるページがあります。管理者が新しい期間を追加したい場合、別の期間がまだないかどうかを確認したいと思います。

これは私の現在のコードですが、ドクトリンのように機能しない<=と思いますか?>=

$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 の管理者にあります。

4

2 に答える 2