Symfony的唯一实体根本不起作用

时间:2019-05-25 12:49:53

标签: php symfony entity

我已经使用Symfony一段时间了,并且已经在另一个项目中使用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;
    }
}

基本上,我想创建一个具有唯一日期字段的时间表对象。我没有收到任何错误,该表格可以正常工作并创建一个新条目。 我在其他领域尝试过同样的事情,并且验证仍然无法正常工作。 有人可以给我一些如何使它工作的提示吗? 谢谢。

1 个答案:

答案 0 :(得分:0)

这个答案可能为时已晚,但我们永远不知道......

在 UniqueEntity 的注释中,您缺少参数字段。所以它应该像这样工作:

* @UniqueEntity(fields="date", message="The date is not unique")