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 回答