如何使用和在教义中的位置和/或位置?

2022-08-30 08:18:31
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,在教义中...?


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

答案 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)
   ))
  ;

这些是捷克学答案中提到的表达。


推荐