unique index with doctrine mongodb odm

x6492ojm  于 12个月前  发布在  Go
关注(0)|答案(2)|浏览(127)

我正在为我的网站做一个注册系统,并希望防止相同的电子邮件地址重复注册。
用户类的声明看起来像这样:

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

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

字符串
但每当我保存一个用户与相同的电子邮件,没有异常提出,我得到一个副本。
我发现在某个地方需要执行$documentManager->flush(array('safe'=>true));但这没有帮助。
我如何才能实现我所需要的?谢谢

wfveoks0

wfveoks01#

我也遇到了类似的问题。索引不是由Doctrine创建的,你可以在mongo控制台中输入以下内容:

db.system.indexes.find()

字符串
我必须直接在mongo中创建索引per these instructions.之后,不会创建重复。
然而Symfony 2/Doctrine似乎没有抛出任何异常,插入只是无声地失败。如果你直接在控制台中插入,Mongodb会提醒你插入失败。
--edit:当array('safe'=>true)被用作flush()的参数时,会抛出异常**。

gdx19jrr

gdx19jrr2#

我是MongoDB的新手,在我的项目中配置Doctrine Mongo DB时遇到了类似的问题。
我使用PHPStorm的DB工具来检查是否创建了索引。
但我可以看到索引,当我运行

db.getCollection("UserDevice").getIndexes()

字符串


相关问题