我有一个名为Test的实体,有两个字段:id和name。 我希望这个名字是独一无二的。
我做了什么:
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
...
/**
* Company\AppBundle\Entity\Test
*
* @ORM\Table(name="test")
* @UniqueEntity("name")
* @ORM\Entity(repositoryClass="Company\AppBundle\Entity\TestRepository")
*
*/
class Test
{
....
/**
* @var string$name
*
* @ORM\Column(name="name", type="string", length=200, nullable=false, unique=true)
*/
private $name;
....
在我的控制器中,我正在使用:
if ($form->isValid()) {
....
但验证通过了。我错过了什么吗?
答案 0 :(得分:2)
唯一注释用于教义,它将它传递给数据库级别,并从那里抛出错误。在您尝试保存实体之前,它不会知道该实体是否存在。要在php中进行检查,您必须自己查询unique属性并检查它是否存在...