반응형
사용 방법 및 교리의 위치 및 위치
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 함수가 있고 Doctrine에는 ...?
$q->where("a = 1")
->andWhere("b = 1 OR b = 2")
->andWhere("c = 2 OR c = 2")
;
다음은 더 복잡한 조건이 있고 다음과 함께 교리 2. *를 사용하는 사람들을위한 예입니다 QueryBuilder
.
$qb->where('o.foo = 1')
->andWhere($qb->expr()->orX(
$qb->expr()->eq('o.bar', 1),
$qb->expr()->eq('o.bar', 2)
))
;
그것들은 Czechnology 답변에 언급 된 표현입니다.
왜 안돼
$q->where("a = 1");
$q->andWhere("b = 1 OR b = 2");
$q->andWhere("c = 1 OR d = 2");
편집 : Expr 클래스 (Doctrine2)를 사용할 수도 있습니다 .
여기에서 빠진 한 가지 : 다음과 같이 조합하려는 다양한 요소가있는 경우
WHERE [...] AND (field LIKE '%abc%' OR field LIKE '%def%')
DQL-String을 직접 조립하고 싶지 않다면 orX
위에서 언급 한 것을 다음과 같이 사용할 수 있습니다 .
$patterns = ['abc', 'def'];
$orStatements = $qb->expr()->orX();
foreach ($patterns as $pattern) {
$orStatements->add(
$qb->expr()->like('field', $qb->expr()->literal('%' . $pattern . '%'))
);
}
$qb->andWhere($orStatements);
참고 URL : https://stackoverflow.com/questions/9095113/how-to-use-andwhere-and-orwhere-in-doctrine
반응형
'Nice programing' 카테고리의 다른 글
Windows에서 Rails v4.1.0 서버를 시작하는 동안 TZInfo :: DataSourceNotFound 오류 (0) | 2020.11.22 |
---|---|
TFS 제어하에 프로젝트에서 빈 폴더를 제거하는 방법은 무엇입니까? (0) | 2020.11.22 |
Java에서 두 문자열을 어떻게 연결합니까? (0) | 2020.11.22 |
가장 빠른 JavaScript 요약 (0) | 2020.11.22 |
Rails : 열에서 고유 한 값을 얻는 방법 (0) | 2020.11.22 |