В Symfony2 с Doctrine и ODM как получить родительский документ из встроенного документа? - PullRequest
1 голос
/ 14 февраля 2012

Используя Symfony2 и Doctrine ODM с MongoDB, мне нужно получить доступ к родительскому документу из в встроенного документа.

У меня есть объект 'Cardset', который имеет embedMany на 'Card'objects.

У объекта 'Card' есть метод 'save image', и я хочу использовать идентификатор объекта Cardset, который его содержит, как часть пути, по которому он сохраняется.

Я не могу найти способ доступа к родительскому документу из встроенного документа.

Если бы я мог получить экземпляр DocumentManager, я мог бы использовать метод getParentAssociation (),Но этот

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

не работает, поскольку он не находится внутри контроллера.У меня недостаточно опыта, чтобы знать, как превратить DocumentManager в сервис, который будет доступен внутри моего класса объектов.

Может кто-нибудь помочь?

1 Ответ

2 голосов
/ 14 февраля 2012

Теоретически вы можете получить к нему доступ, используя 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

...