[SQL] 어떻게 교리 andWhere 및 orWhere를 사용 하는가?
SQL어떻게 교리 andWhere 및 orWhere를 사용 하는가?
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")
하지만 난 그것을 어떻게 만들 수 있습니까? 추진에 ... 교리 기능 getNewCriterion, 그리고?
해결법
-
==============================
1.
$q->where("a = 1") ->andWhere("b = 1 OR b = 2") ->andWhere("c = 2 OR c = 2") ;
-
==============================
2.여기에 QueryBuilder와 교리 2. *를 사용하여 더 복잡한 조건이있는 사람들에 대한 예입니다 :
여기에 QueryBuilder와 교리 2. *를 사용하여 더 복잡한 조건이있는 사람들에 대한 예입니다 :
$qb->where('o.foo = 1') ->andWhere($qb->expr()->orX( $qb->expr()->eq('o.bar', 1), $qb->expr()->eq('o.bar', 2) )) ;
사람들은 Czechnology 답변에서 언급 한 표현이다.
-
==============================
3.당신이 요소의 변화하는 번호가있을 경우이 같은에 함께 넣어하려는 : 여기에없는 것은
당신이 요소의 변화하는 번호가있을 경우이 같은에 함께 넣어하려는 : 여기에없는 것은
WHERE [...] AND (field LIKE '%abc%' OR field LIKE '%def%')
그리고 그나마 당신이 ORX이 같은 위에서 언급 사용하는 DQL 문자열을 직접 조립하려면 :
$patterns = ['abc', 'def']; $orStatements = $qb->expr()->orX(); foreach ($patterns as $pattern) { $orStatements->add( $qb->expr()->like('field', $qb->expr()->literal('%' . $pattern . '%')) ); } $qb->andWhere($orStatements);
-
==============================
4.왜 그냥
왜 그냥
$q->where("a = 1"); $q->andWhere("b = 1 OR b = 2"); $q->andWhere("c = 1 OR d = 2");
편집 : 당신은 또한 EXPR 클래스 (Doctrine2)를 사용할 수 있습니다.
from https://stackoverflow.com/questions/9095113/how-to-use-andwhere-and-orwhere-in-doctrine by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 선택 권한, 데이터베이스 'mssqlsystemresource', 스키마 'SYS'대상 '을 sysobjects'에 거부 (0) | 2020.07.04 |
---|---|
[SQL] SQL 쿼리는 객실 가용성을 검색합니다 (0) | 2020.07.04 |
[SQL] 약한 개체에 대한 데이터베이스 모델링 (0) | 2020.07.04 |
[SQL] 카테고리의 큰 불확정 번호 교차 (0) | 2020.07.04 |
[SQL] 실제 HTML 트리로 중첩 된 세트에서 모든 레코드를 렌더링하는 방법 (0) | 2020.07.04 |