代码之家  ›  专栏  ›  技术社区  ›  Daniel

如何在Symfony PHPCR查询生成器中按子值筛选

  •  1
  • Daniel  · 技术社区  · 10 年前

    尝试在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 回复  |  直到 10 年前
        1
  •  0
  •   dantelo    10 年前

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

        $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();