如何在 Symfony PHPCR 查询生成器中按子值过滤
How to filter by child value in Symfony PHPCR Query Builder
尝试在 symfony 中构建查询,以查找具有给定名称的特定文档类型的所有 PHPCR 节点,并按其地址子文档的城市进行过滤。
$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();
无法正常工作,最好的方法是什么?
谢谢!
一种工作方法是加入文档并使用子条件:
$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();
尝试在 symfony 中构建查询,以查找具有给定名称的特定文档类型的所有 PHPCR 节点,并按其地址子文档的城市进行过滤。
$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();
无法正常工作,最好的方法是什么?
谢谢!
一种工作方法是加入文档并使用子条件:
$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();