반응형
symfony2 doctrine query Builder를 사용하여 고유 한 쿼리를 선택하는 방법은 무엇입니까?
내 프로젝트의 블로그 섹션과 관련된 모든 범주를 검색하는이 심포니 코드가 있습니다.
$category = $catrep->createQueryBuilder('cc')
->Where('cc.contenttype = :type')
->setParameter('type', 'blogarticle')
->getQuery();
$categories = $category->getResult();
이것은 작동하지만 쿼리에는 중복이 포함됩니다.
Test Content
Business
Test Content
DISTINCT
내 쿼리 에서 명령 을 사용하고 싶습니다 . 내가 본 유일한 예에서는 원시 SQL을 작성해야합니다. 모든 코드를 동일하게 유지하여 Symfony2 / Doctrine에서 제공하는 QueryBuilder 기능을 모두 사용하므로 가능한 한 이것을 피하고 싶습니다.
distinct()
다음과 같이 내 쿼리에 추가하려고 했습니다.
$category = $catrep->createQueryBuilder('cc')
->Where('cc.contenttype = :type')
->setParameter('type', 'blogarticle')
->distinct('cc.categoryid')
->getQuery();
$categories = $category->getResult();
그러나 다음과 같은 오류가 발생합니다.
치명적인 오류 : 정의되지 않은 메서드 Doctrine \ ORM \ QueryBuilder :: distinct () 호출
Symfony에게 구별을 선택하도록 어떻게 지시합니까?
당신은 쓸 수 있습니다
select DISTINCT f from t;
같이
select f from t group by f;
문제는, 저는 현재 제 자신이 교리에 들어가 있기 때문에 여러분에게 진정한 답을 줄 수는 없습니다. 그러나 위에 표시된대로 그룹 별 구별을 시뮬레이션하고 이를 교리 로 변환 할 수 있습니다. 더 많은 필터링을 추가하려면 HAVING
그룹별로 사용하십시오.
이것은 작동합니다 :
$category = $catrep->createQueryBuilder('cc')
->select('cc.categoryid')
->where('cc.contenttype = :type')
->setParameter('type', 'blogarticle')
->distinct()
->getQuery();
$categories = $category->getResult();
"select ()"문을 사용하면 다음과 같이 할 수 있습니다.
$category = $catrep->createQueryBuilder('cc')
->select('DISTINCT cc.contenttype')
->Where('cc.contenttype = :type')
->setParameter('type', 'blogarticle')
->getQuery();
$categories = $category->getResult();
반응형
'IT TIP' 카테고리의 다른 글
Enter 키를 눌렀을 때 실행되는 WPF TextBox 명령 (0) | 2020.10.30 |
---|---|
git 얕은 클론 (clone --depth)이 원격 분기를 놓친다 (0) | 2020.10.30 |
ASP.NET Custom Validator 클라이언트 측 및 서버 측 유효성 검사가 실행되지 않음 (0) | 2020.10.30 |
열 (GridView)을 숨기지 만 여전히 해당 값에 액세스하는 방법은 무엇입니까? (0) | 2020.10.30 |
여러 dex 파일이 Lorg / apache / cordova / BuildHelper를 정의합니다. (0) | 2020.10.30 |