首页 > 解决方案 > Doctrine DQL WHERE(条件 1 和条件 2)或(条件 3 和条件 4)

问题描述

我正在尝试在以下方面做类似的SQL事情DQL

SELECT * FROM TBL
WHERE (something = foo AND something2 = foo2) 
OR (something3 = foo3 AND something4 = foo4)

我得到了这似乎可行,但我对此表示严重怀疑;你怎么看 ?

->where('something = :foo')
->setParameter('foo', $fooValue)
->andWhere('something2 = :foo2')
->setParameter('foo2', $fooValue2)

->orWhere('something3 = :foo3')
->setParameter('foo3', $fooValue3)
->andWhere('something4 = :foo4')
->setParameter('foo4', $fooValue4)

->getQuery()
->getArrayResult()

标签: sqldoctrine-orm

解决方案


你可以使用$em->createQuery方法

$query = $em->createQuery('SELECT t FROM Tbl t WHERE (t.something = :foo AND t.something2 = :foo2) OR (t.something3 = :foo3 AND t.something4 = :foo4)');
$query->setParameter(...);
$result = $query->getResult();

推荐阅读