将Symfony2和Doctrine ODM与MongoDB一起使用,我需要从 嵌入文档中访问父文档。
我有一个'Cardset'对象,它在'Card'对象上嵌入了许多。
'Card'对象有一个'保存图像'方法,我想让它使用包含它的Cardset对象的ID作为它保存路径的一部分。
我找不到从embeddeddocument中访问父文档的方法。
如果我能掌握'DocumentManager'的实例,我或许可以使用'getParentAssociation()'方法。但是这个
$this->get('doctrine.odm.mongodb.document_manager');
不起作用,因为它不在Controller中。我没有足够的经验知道如何将DocumentManager变成一个可以从我的对象类中获得的服务。
有人可以帮忙吗?
答案 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