2

私は自分のサイトの登録システムを実行していて、同じメールアドレスでの重複登録を防ぎたいと思っています。

ユーザークラスの宣言は次のようになります。

/**
 * @Document
 */
class User extends BaseEntity
{
    private 
    /**
     * @Id
     */
    $id,

    /**
     * @String @Index(unique=true)
     */    
    $email
;
}

しかし、同じ電子メールでユーザーを保存するたびに、例外は発生せず、重複が発生します。

$ documentManager-> flush(array('safe' => true));を実行する必要があることがどこかで見つかりました。しかし、それは役に立ちません。

どうすれば必要なことを達成できますか?ありがとう

4

1 に答える 1

5

私も同様の問題を抱えていました。mongoコンソールで次のように入力するとわかるように、インデックスはDoctrineによって作成されていません。

db.system.indexes.find()

これらの手順に従って、mongoで直接インデックスを作成する必要がありました。その後、重複は作成されません。

ただし、Symfony2 / Doctrineは例外をスローしないようで、挿入はサイレントに失敗します。Mongodbは、コンソールで直接挿入した場合、挿入の失敗を警告します。

--edit:元の投稿のようにflush()のパラメーターとして使用されると、例外スローされます。array('safe'=>true)

于 2011-11-10T18:19:51.530 に答える