如何在Symfony PHPCR Query Builder中按子值过滤

时间:2015-03-31 14:11:53

标签: symfony doctrine-odm doctrine-query doctrine-phpcr

尝试在symfony中构建一个查询,该查询查找具有给定名称的特定文档类型的所有PHPCR节点,并按其Address子文档的城市过滤。

    $qb->from()
            ->document('My\Bundle\Document\MyDocument', 'm')
        ->end()
        ->where()
        ->andX()
            ->eq()
                ->upperCase()->field('m.name')->end()
                ->literal('SOME-NAME')
            ->end()
            ->child('address', 'a')
                ->eq()
                    ->upperCase()->field('a.city')->end()
                    ->literal('MADRID'))
            ->end();

无法实现这一目标,最佳方法是什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

一种工作方法是加入文件并使用子条件:

    $qb
        ->from('u')
        ->joinInner()
            ->left()->document('My\Bundle\Document\MyDocument', 'm')->end()
            ->right()->document('My\Bundle\Document\Address', 'a')->end()
                ->condition()->child('a', 'm')->end()
            ->end()
        ->end()
        ->where()
            ->eq()
                ->upperCase()->field('u.name')->end()
                ->literal('SOME-NAME')->end()
            ->end()
        ->andWhere()
            ->eq()
                ->upperCase()->field('a.city')->end()
                ->literal('SOME-CITY')->end()
        ->end();