我有以下的实体类在我的应用程序:为什么我的Symfony2 @UniqueEntity约束根本无法工作?
<?php
namespace ...;
// use ...
use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;;
// ...
/**
* @ORM\Table(name="sc_user")
* @ORM\Entity(repositoryClass="...\UserRepository")
* @ORM\HasLifecycleCallbacks()
* @UniqueEntity(fields={"email", "username"})
*/
class User implements UserInterface, \Serializable, EquatableInterface
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string $email
*
* @ORM\Column(name="email", type="string", length=255, unique=true)
*
* @Assert\NotBlank(groups={"registration"})
* @Assert\Email(groups={"registration"})
*/
private $email;
/**
* @var string $username
*
* @ORM\Column(name="username", type="string", length=32, unique=true)
*
* @Assert\NotBlank(groups={"registration"})
*/
private $username;
// ...
}
的@UniqueEntity约束被忽略。我尝试不同的口味,包括:
@UniqueEntity(fields={"email", "username"})
和
@UniqueEntity(fields={"email"})
@UniqueEntity(fields={"username"})
,并按照这里的Symfony2的文档:http://symfony.com/doc/current/reference/constraints/UniqueEntity.html
@UniqueEntity("email")
@UniqueEntity("username")
没有我这样做,工作。非但没有如预期的表单验证错误的,我得到以下异常:
SQLSTATE [23000]:完整性约束违规:1062重复条目 “[email protected]”关键“UNIQ_D8183973E7927C74”
这是错的!有谁知道如何解决这个问题?
+1感谢!那工作的一种享受! – coder4show 2013-06-25 15:44:12
嗨,Josef,似乎有点老问题,但我遇到同样的问题 - 只是想知道 - 你需要,我不知道,__create__验证组在某处?我完全按照你的方式添加了唯一的实体字段,只能在电子邮件和手机上添加,但它仍然给我一个异常而不是验证错误。有任何想法吗? – iLikeBreakfast 2014-01-07 19:57:15
@iLikeBreakfast您需要在FormType中的setDefaultOptions方法中声明验证组。 – ferdynator 2014-07-30 12:46:46