doctrine 2 ODM防止重复记录

Fat*_*moo 6 php mongodb doctrine-orm

在这里学说NOOB,试图弄清楚如何在嵌入许多属性时防止重复记录.我有一个像这样的EmbededDocment:

<?
/**
 * @EmbeddedDocument
 */
class Contact {
/**
 * @Id
 */
private $id;

/**
 * created timestamp
 * @Date
 */
private $created;

/**
 * modified timestamp
 * @Date
 */
private $modified;

/**
 * @String
 */
private $name;

 /**
 * @String
 */
private $name;

 /**
 * @String
 */
private $address;
 }
Run Code Online (Sandbox Code Playgroud)

我想要发生的是当我添加新联系人时,两个联系人可以具有相同的名称,两个联系人可以具有相同的地址,但是两个联系人不能具有相同的名称和地址.检查重复项时,doctrine将需要忽略$ id,$ created和$ modified属性,因为这些属性几乎总是不同的.它是必须唯一的所有其他字段的组合.如何使用学说来实现这一目标?这个逻辑是属于服务层还是教条可以为我做?

更新: 我确实接受安德鲁的回答是使用Mongo检查重复的正确方法,我真的想知道教义是否可以为我做这件事.因此,我开始赏金.

Reu*_*ven 1

您可以实现一个事件侦听器,它将侦听 preUpdate 和 prePersist 事件。 http://www.doctrine-project.org/docs/mongodb_odm/1.0/en/reference/events.html

在您的情况下,您可以自行检查。