我使用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”的聚合创建一个辅助文档,有没有更简单的方法来实现它?
谢谢!
答案 0 :(得分:0)
为了解决这个问题,我开始玩继承。我创建了一个父类,然后创建了一个从父类扩展的子类。我尝试在我需要的时候投射到子类,但它没有工作...... :(在我继承测试后,我设法通过以下方式解决问题:
1)我创建了基础对象类“MyDocument2”。
2)我创建了一个具有以下结构的辅助类:
class AuxiliaryDocument{
/**
*@MongoDB\ReferenceOne(targetDocument="MyDocument2")
*/
$myDocument;
/**
*@MongoDB\String
*/
$additionalProperty;
}
3)辅助对象实现后,我只需要将MyDocument类中的类型更改为:
/**
*@MongoDB\ReferenceMany(targetDocument="AuxiliaryDocument")
*/
$property2 = array();
我认为这不是解决问题的最优雅方式,但我认为这是解决问题的快捷方法。