Как фильтровать по дочернему значению в Symfony PHPCR Query Builder
Попытка построить запрос в 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 ответ
Решение
Рабочий подход состоит в том, чтобы соединить документы и использовать дочернее условие:
$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();