Doctrine PHPCR — запрос атрибута ReferenceOne

У меня проблема с доктриной phpcr и построителем запросов. Можно ли выполнить запрос атрибута с помощью ReferenceOne()?

e.g :

/**
 * @PHPCR\ReferenceOne(targetDocument="....\Program")
 */
private $program;

Но когда я пытаюсь построить на нем запрос:

$qb->where()->eq()->field('news.program')->literal($program->getId())->end();

у меня следующая ошибка

Cannot use association property "program" of class "...\News" as a dynamic operand. 

Есть ли способ сделать запрос по этому типу атрибута, пожалуйста?


person Peekmo    schedule 16.03.2015    source источник


Ответы (1)


Для этого вам нужно использовать DocumentManager::getReferrers().

https://github.com/doctrine/phpcr-odm/blob/master/lib/Doctrine/ODM/PHPCR/DocumentManager.php#L722

В контексте ContainerAware (контроллер или устройство):

/** @var \Doctrine\ODM\PHPCR\DocumentManager $dm */
$dm = $this->getContainer()->get('doctrine_phpcr')->getManager();

$referrers = $dm->getReferrers($yourObject, null, null, null, 'YourBundle:ReferrersClass');

Вот было бы:

$news = $dm->getReferrers($program, null, null, null, 'YourBundle:News');
person void    schedule 07.09.2015