0

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');
4

2 回答 2

1

原始海报现在为此创建了一个 github 问题https://github.com/doctrine/phpcr-odm/issues/619

于 2015-03-25T08:58:10.993 回答
0

只是为了帮助更多的访问者,这里是正确的语法。

(所有dantleechdbu的学分)

 $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');
于 2015-03-25T13:33:41.407 回答