반응형
여러 OR 조건이 있는 ZF2 원칙 쿼리
저는 다음과 같은 독트린 쿼리를 작성했습니다.
$query3 = $this->entityManager
->createQueryBuilder()
->select('t.textDomain , t.translationKey , t.languageIso , t.translationDate')
->from(
'AMDatabase\Entity\TheVerse\TranslationsMasters',
't'
)
->groupBy('t.languageIso')
->orderBy(
't.translationDate',
'DESC'
);
// the values of $key2 array are:
// en-US
// es-MX
// es-PR
foreach( $translation AS $key2=>$value2 ) {
if ( $key2 == 'en-US' ) {
$query3
->orWhere(
$query3->expr()
->like(
't.languageIso',
':languageIso'
)
)
->setParameter(
'languageIso',
$key2
);
}
}
$result3 = $query3->getQuery()
->getArrayResult();
3가지 언어 ISO를 동시에 검색하려면 어떻게 해야 하나요?
- "if ( $key2 == 'en-US' ) {"를 사용하면 쿼리가 실행되어 예상된 결과를 얻을 수 있습니다.
- 그러나 "if ( $key2 == 'en-US' ) {"를 삭제하면 검색 결과가 없습니다.
"또는 "어디"를 사용하면 쿼리에 계속 조건이 추가된다고 생각했습니다(En-US는 여전히 일치합니다).
인은 지금까지 한 번도orWhere
제 생각대로 작동할 수 있도록 말이죠.아마도 당신이 필요로 할 것이다.Where
첫 번째 정의에서 다음 명령을 추가할 수 있습니다.orWhere
나중에. 네스트된 파일을 사용해야 할 수도 있습니다.orX
대신 다음과 같은 문구를 사용합니다.
$query3->andWhere($query3->expr()->orX(
$query3->expr()->like('t.languageIso', $query3->expr()->literal('en-US')),
$query3->expr()->like('t.languageIso', $query3->expr()->literal('es-MX')),
$query3->expr()->like('t.languageIso', $query3->expr()->literal('es-PR'))
));
루프를 통해 스테이트먼트를 전개할 수 없습니다.단, 3가지 기준밖에 없기 때문에 쉽게 작성할 수 있습니다.
언급URL : https://stackoverflow.com/questions/29978816/zf2-doctrine-query-with-multiple-or-conditions
반응형
'programing' 카테고리의 다른 글
PHP에서 이메일을 검증하는 방법 (0) | 2022.11.04 |
---|---|
왜 java.util일까요?선택사항은 Serialable이 아닙니다. 이러한 필드를 사용하여 개체를 Serialize하는 방법 (0) | 2022.11.04 |
PHP용 예쁜 프린트가 있나요? (0) | 2022.11.04 |
업데이트 참여에 대한 MySQL 구문 (0) | 2022.11.04 |
리소스는 문서로 해석되지만 MIME 유형의 응용 프로그램/zip과 함께 전송됨 (0) | 2022.11.04 |