アプリケーションに次のエンティティクラスがあります。
<?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キー'UNIQ_D8183973E7927C74'の重複エントリ'admin@scire.com'
これは間違っています!誰かがこの問題を修正する方法を知っていますか?