在属于doctrine的文档中添加属性

时间:2014-05-15 13:30:40

标签: php mongodb symfony doctrine-orm doctrine

我使用Doctrine在Symfony中使用MongoDb完全是新手,我目前处于以下情况:

MyDocument{
    property1:key1,
    property2:[{{MyDocument2},additionalProperty:key},...]
    ....
}

在学说中,我有类似的东西:

class MyDocument{
     /**
     *@MongoDB\String
     */
     $property1;

     /**
     *@MongoDB\ReferenceMany(targetDocument="MyDocument2")
     */
     $property2 = array();
}

基本上我的问题是如何在Doctrine中将 additionalProperty 附加到“MyDocument2”。我想我必须使用“MyDocument2”和“additionalProperty”的聚合创建一个辅助文档,有没有更简单的方法来实现它?

谢谢!

1 个答案:

答案 0 :(得分:0)

为了解决这个问题,我开始玩继承。我创建了一个父类,然后创建了一个从父类扩展的子类。我尝试在我需要的时候投射到子类,但它没有工作...... :(在我继承测试后,我设法通过以下方式解决问题:

1)我创建了基础对象类“MyDocument2”。

2)我创建了一个具有以下结构的辅助类:

class AuxiliaryDocument{

 /**
 *@MongoDB\ReferenceOne(targetDocument="MyDocument2")
 */
 $myDocument;

 /**
 *@MongoDB\String
 */
 $additionalProperty;
 }

3)辅助对象实现后,我只需要将MyDocument类中的类型更改为:

/**
 *@MongoDB\ReferenceMany(targetDocument="AuxiliaryDocument")
 */
 $property2 = array();

我认为这不是解决问题的最优雅方式,但我认为这是解决问题的快捷方法。