在带有Doctrine和ODM的Symfony2中,如何从嵌入式文档中获取父文档?

时间:2012-02-13 23:52:15

标签: mongodb doctrine symfony

将Symfony2和Doctrine ODM与MongoDB一起使用,我需要从 嵌入文档中访问父文档。

我有一个'Cardset'对象,它在'Card'对象上嵌入了许多。

'Card'对象有一个'保存图像'方法,我想让它使用包含它的Cardset对象的ID作为它保存路径的一部分。

我找不到从embeddeddocument中访问父文档的方法。

如果我能掌握'DocumentManager'的实例,我或许可以使用'getParentAssociation()'方法。但是这个

$this->get('doctrine.odm.mongodb.document_manager');

不起作用,因为它不在Controller中。我没有足够的经验知道如何将DocumentManager变成一个可以从我的对象类中获得的服务。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

理论上你可以使用UnitOfWork访问它:

$uo = $this->get('doctrine.odm.mongodb.document_manager')->getUnitOfWork();
list($mapping, $parent, $propertyPath) = $uo->getParentAssociation($embeddedDocument); 

编辑:您不应该从实体/文档(或嵌入文档)中获取它。 但如果你愿意,你必须使用“postLoad”上的监听器注入它:http://readthedocs.org/docs/doctrine-mongodb-odm/en/latest/reference/events.html?highlight=postload#lifecycle-events