在教条中如何使用和在哪里?

WHERE a = 1 AND (b = 1 Or b = 2) AND (c = 1 OR c = 2) 

我怎样才能做到这一点在教义?

 $q->where("a = 1"); $q->andWhere("b = 1") $q->orWhere("b = 2") $q->andWhere("c = 1") $q->orWhere("d = 2") 

这是不正确的…应该是:

 $q->where("a = 1"); $q->andWhere("b = 1") $q->orWhere("b = 2") $q->andWhere("c = 1") $q->orWhere("d = 2") 

但我怎么能做到这一点? 在Propel是函数getNewCriterion ,并在学说…?

 $q->where("a = 1") ->andWhere("b = 1 OR b = 2") ->andWhere("c = 2 OR c = 2") ; 

这里有一个例子,对于那些有更复杂的条件和使用Doctrine 2的人来说。*使用QueryBuilder

 $qb->where('o.foo = 1') ->andWhere($qb->expr()->orX( $qb->expr()->eq('o.bar', 1), $qb->expr()->eq('o.bar', 2) )) ; 

这些都是Czechnology答案中提到的expression式。

为什么不只是

 $q->where("a = 1"); $q->andWhere("b = 1 OR b = 2"); $q->andWhere("c = 1 OR d = 2"); 

编辑 :你也可以使用Expr类 (Doctrine2)。