Как сделать вложенные где пункты с phpcr odm

Документация по phpcr odm кажется достаточно ясной по этому вопросу, но я не могу это сделать. Здесь ожидается необработанный эквивалент mysql:

SELECT (foo, bar, baz) FROM table
WHERE (foo = 'foo') AND bar = 'bar' OR (baz = 'baz' OR baz = 'bazinga')

Я попробовал что-то подобное.

$qb->from()
->document('Detours\MainBundle\Document\Product', 'p');

$qb->where()
->andX()
->eq()
->field('p.foo')
->literal('foo');

$qb->andWhere()
    ->eq()
    ->field('p.bar')
    ->literal('bar')
    ->end();


$qb->where()
   ->eq()
   ->field('p.baz')
   ->literal('baz');
$qb->orWhere()
  ->eq()
  ->field('p.baz')
  ->literal('baz');

2 ответа

Оригинальный плакат создал проблему github для этого сейчас https://github.com/doctrine/phpcr-odm/issues/619

Просто, чтобы помочь посетителям, здесь правильный синтаксис.

(Все кредиты дантлеч и дбу)

 $qb->where()
->andX()
    ->eq()->field('p.foo')->literal('foo')->end()
    ->orX()
        ->eq()->field('p.bar')->literal('bar')->end()
        ->orX()
            ->eq()->field('p.baz')->literal('baz')->end()
            ->eq()->field('p.baz')->literal('bazinga');
Другие вопросы по тегам