Уникальная сущность Symfony вообще не работает - PullRequest
0 голосов
/ 25 мая 2019

Я уже некоторое время пользуюсь Symfony и уже проверил уникальность Entity в другом проекте, и это сработало.Я пытаюсь создать новый проект, и по какой-то причине Unique Entity не остановит меня от вставки повторяющихся полей.

$timetable = new Timetable();

    $form = $this->createFormBuilder()
        ->add("name", TextType::class, ["label"=>"Nazwa","attr"=>["class"=>"form-control"]])
        ->add(
            "year",
            ChoiceType::class,
            ["label" => "Rok", "choices" => $years, "attr" => ["class" => "form-control"]]
        )
        ->add(
            "month",
            ChoiceType::class,
            ["label" => "Miesiąc", "choices" => $months, "attr" => ["class" => "form-control"]]
        )
        ->add("dodaj",
            SubmitType::class,
            ["attr"=>["class"=>"btn btn-primary btn-block mt-3"]]
            )
        ->getForm();

        $form->handleRequest($request);

        if($form->isSubmitted() && $form->isValid() ){
            $month = $form["month"]->getData();
            $year = $form["year"]->getData();
            $name = $form["name"]->getData();

            $date = new \DateTime("$month.01.$year");
            $timetable->setDate($date);
            $timetable->setName($name);

            $em = $this->getDoctrine()->getManager();
            $em->persist($timetable);
            $em->flush();

            return $this->redirect("/newtimetable");
        }

И это мой класс сущностей:

    <?php

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;


/**
 * @ORM\Entity(repositoryClass="App\Repository\TimetableRepository")
 * @UniqueEntity("date",message="The date is not unique")
 *
 */

class Timetable
{

    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=255, name="name")
     */
    private $name;

    /**
     * @ORM\Column(type="date", unique=true, name="date")
     */
    private $date;

    public function getId(): ?int
    {
        return $this->id;
    }

    public function getName(): ?string
    {
        return $this->name;
    }

    public function setName(string $name): self
    {
        $this->name = $name;

        return $this;
    }

    public function getDate(): ?\DateTimeInterface
    {
        return $this->date;
    }

    public function setDate(\DateTimeInterface $date): self
    {
        $this->date = $date;

        return $this;
    }
}

По сути, я хочу создать объект Timetable с уникальным полем даты.Я не получаю никаких ошибок, форма просто работает и создает новую запись.Я пробовал то же самое с другими полями, и проверка в любом случае не работает.Кто-нибудь может дать мне несколько советов о том, как заставить это работать?Спасибо.

...