Я уже некоторое время пользуюсь 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 с уникальным полем даты.Я не получаю никаких ошибок, форма просто работает и создает новую запись.Я пробовал то же самое с другими полями, и проверка в любом случае не работает.Кто-нибудь может дать мне несколько советов о том, как заставить это работать?Спасибо.