1

doctrine phpcr とクエリビルダーに問題があります。ReferenceOne() を使用して属性に対してクエリを実行することは可能ですか?

例:

/**
 * @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. 

この種の属性に対してクエリを実行する方法はありますか?

4

1 に答える 1

0

これを行うには、 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');
于 2015-09-07T08:58:23.093 に答える