私は自分のアプリケーションでは、次のエンティティクラスを持っている: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")
何も、作品私は、以下を含むさまざまな味を試してみました。整合性制約違反:1062重複したエントリ 「[email protected]」キーのための「UNIQ_D8183973E7927C74」
[23000]SQLSTATE:代わりに、期待通りにフォームの検証エラーを取得し、私は次の例外を取得しています
これは間違っています!誰もこの問題を解決する方法を知っていますか?登録グループが欠落していた
@UniqueEntity(fields={"email"}, groups={"registration"})
@UniqueEntity(fields={"username"}, groups={"registration"})
、と私は2つにそれらを分離するために必要な:
+1感謝を!それは治療を働いた! – coder4show
こんにちはJosefさん、以前の質問のようですが、あなたと同じ問題を抱えています。ちょっと疑問に思っています。私は電子メールと携帯電話だけであなたがしたのと全く同じユニークなエンティティフィールドを追加しましたが、それでも検証エラーの代わりに私に例外を与えています。何か案は? – iLikeBreakfast
@iLikeBreakfastあなたの 'FormType'の' setDefaultOptions'メソッドで検証グループを宣言する必要があります – ferdynator