반응형
원칙의 사용방법 및 장소 및 장소
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에서는 함수가 get NewCriterion이고, 독트린에서는...?
$q->where("a = 1")
->andWhere("b = 1 OR b = 2")
->andWhere("c = 2 OR c = 2")
;
다음 예시는 보다 복잡한 조건을 가지고 있으며,와 함께 원칙 2.*를 사용하는 사용자를 위한 것입니다.
$qb->where('o.foo = 1')
->andWhere($qb->expr()->orX(
$qb->expr()->eq('o.bar', 1),
$qb->expr()->eq('o.bar', 2)
))
;
그것들은 Czechnology의 답변에 언급된 표현들이다.
여기서 한 가지 부족한 점이 있습니다.여러 가지 요소를 조합하여 다음과 같은 작업을 수행하는 경우
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);
왜 그냥 하지 않는 거야?
$q->where("a = 1");
$q->andWhere("b = 1 OR b = 2");
$q->andWhere("c = 1 OR d = 2");
편집: Expr 클래스(Doctrine2)를 사용할 수도 있습니다.
언급URL : https://stackoverflow.com/questions/9095113/how-to-use-andwhere-and-orwhere-in-doctrine
반응형
'source' 카테고리의 다른 글
Larabel 4에서 새로운 빈 웅변 컬렉션을 수동으로 만드는 방법 (0) | 2023.01.29 |
---|---|
php.ini & SMTP= - 사용자 이름과 비밀번호 전달 방법 (0) | 2023.01.29 |
IntelliJ에서의 RegEx 백레퍼런스 (0) | 2023.01.19 |
JPA 및 최대 절전 모드로 UTC 시간대에 날짜/시간 및 타임스탬프를 저장하는 방법 (0) | 2023.01.19 |
세그먼트 장애는 MariaDB c++ 커넥터와 regex를 사용할 때 발생합니다. (0) | 2023.01.19 |