我正在为我的网站做一个注册系统,并希望防止相同的电子邮件地址重复注册。
用户类的声明看起来像这样:
/**
* @Document
*/
class User extends BaseEntity
{
private
/**
* @Id
*/
$id,
/**
* @String @Index(unique=true)
*/
$email
;
}
字符串
但每当我保存一个用户与相同的电子邮件,没有异常提出,我得到一个副本。
我发现在某个地方需要执行$documentManager->flush(array('safe'=>true));但这没有帮助。
我如何才能实现我所需要的?谢谢
2条答案
按热度按时间wfveoks01#
我也遇到了类似的问题。索引不是由Doctrine创建的,你可以在mongo控制台中输入以下内容:
字符串
我必须直接在mongo中创建索引per these instructions.之后,不会创建重复。
然而Symfony 2/Doctrine似乎没有抛出任何异常,插入只是无声地失败。如果你直接在控制台中插入,Mongodb会提醒你插入失败。
--edit:当
array('safe'=>true)
被用作flush()的参数时,会抛出异常**。gdx19jrr2#
我是MongoDB的新手,在我的项目中配置Doctrine Mongo DB时遇到了类似的问题。
我使用PHPStorm的DB工具来检查是否创建了索引。
但我可以看到索引,当我运行
字符串
的