уникальный индекс с учением mongodb odm - PullRequest
1 голос
/ 01 ноября 2011

Я делаю систему регистрации для своего сайта и хочу предотвратить повторные регистрации с тем же адресом электронной почты.

объявление класса пользователя выглядит следующим образом:

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

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

но всякий раз, когда я сохраняю пользователя с тем же адресом электронной почты, исключение не возникает, и я получаю дубликат.

я где-то обнаруживал, что мне нужно сделать $ documentManager-> flush (array ('safe' => true));но это не помогает.

Как мне достичь того, что мне нужно?Спасибо

1 Ответ

5 голосов
/ 10 ноября 2011

У меня была похожая проблема.Индекс не создается Doctrine, как вы можете видеть, набрав в консоли mongo следующее:

db.system.indexes.find()

Мне пришлось создать свой индекс непосредственно в mongo согласно этим инструкциям. Послечто дубликаты не будут созданы.

Однако Symfony2 / Doctrine, похоже, не выдает никаких исключений, вставка просто завершается неудачно.Mongodb предупреждает вас о неудачной вставке, если вы делаете это непосредственно в консоли.

- правка: Исключение выдается , когда array('safe'=>true) используется в качестве параметра для flush ()согласно оригинальному сообщению.

...