programing

원칙이 있는 여러 열로 정렬

coolbiz 2022. 9. 21. 23:11
반응형

원칙이 있는 여러 열로 정렬

데이터를 두 열로 정렬해야 합니다(행의 값이 다른 경우 1열로 정렬하고, 그렇지 않은 경우 2열로 정렬).

사용하고 있습니다.QueryBuilder쿼리를 만듭니다.

전화하면orderBy두 번째 방법은 이전에 지정된 순서를 대체합니다.

첫 번째 매개 변수로 두 개의 열을 전달할 수 있습니다.

->orderBy('r.firstColumn, r.secondColumn', 'DESC');

그러나 두 번째 파라미터의 순서 지정 방향은 전달할 수 없기 때문에 이 쿼리를 실행하면 첫 번째 열은 오름차순, 두 번째 열은 내림차순으로 정렬됩니다.둘 다 내림차순을 사용하고 싶습니다.

이 작업을 할 수 있는 방법이 있나요?QueryBuilderDQL을 사용해야 합니까?

다음 열 이름 바로 뒤에 주문 방향을 추가해야 합니다.

$qb->orderBy('column1 ASC, column2 DESC');

전술한 바와 같이, 에의 복수의 콜이orderBy 는 스택하지 않지만, 에 복수의 콜을 발신할 수 있습니다.

$qb->addOrderBy('column1', 'ASC')
   ->addOrderBy('column2', 'DESC');

원칙 2.x에서는 위 예시와 같이 원칙 'orderBy' 또는 'addOrderBy'를 사용하여 여러 순서를 전달할 수 없습니다.orderBy 함수와 같이 두 번째 파라미터를 공백으로 두면 마지막 열 이름 끝에 'ASC'가 자동으로 추가됩니다.

예를 들면->orderBy('a.fist_name ASC, a.last_name ASC')는 ORDER BY first_name ASC, last_name ASC와 같은 SQL을 출력합니다.SQL 구문 오류입니다.단순히 orderBy 또는 addOrderBy의 기본값이 'ASC'이기 때문입니다.

여러 개의 주문을 추가하려면 '추가' 기능을 사용해야 합니다.그리고 이렇게 될 거야.

->add('orderBy','first_name ASC, last_name ASC')그러면 올바른 형식의 SQL이 나타납니다.

add() 함수에 대한 자세한 정보.https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/query-builder.html#low-level-api

이게 도움이 됐으면 좋겠다.건배!

사용할 수 있습니다.->addOrderBy($sort, $order)

추가: Doctrine Querybuilder btw.는 통상적인 메서드의 「특수한」변경을 사용하는 경우가 많습니다.를 참조해 주십시오.select-addSelect,where-andWhere-orWhere,groupBy-addgroupBy...

orderBy() 뒤에 addOrderBy()를 사용할 수 있습니다.여러 orderBy()를 네스트 할 수는 없지만 여러 addOrderBy()를 첫 번째 orderBy() 뒤에 네스트 할 수도 있습니다.

예:

$this->createQueryBuilder('entity')
       ->orderBy('entity.addDate', 'DESC')
       ->addOrderBy('entity.id', 'DESC')
  

orderBymethod에는 2개의 문자열 또는Expr\OrderBy물건.여러 주문 선언을 추가하려면 다음 명령을 사용하는 것이 좋습니다.addOrderBy메서드 또는 인스턴스화OrderBy오브젝트하고 그에 따라 입력합니다.

   # Inside a Repository method:
   $myResults = $this->createQueryBuilder('a')
       ->addOrderBy('a.column1', 'ASC')
       ->addOrderBy('a.column2', 'ASC')
       ->addOrderBy('a.column3', 'DESC')
   ;

   # Or, using a OrderBy object:
   $orderBy = new OrderBy('a.column1', 'ASC');
   $orderBy->add('a.column2', 'ASC');
   $orderBy->add('a.column3', 'DESC');

   $myResults = $this->createQueryBuilder('a')
       ->orderBy($orderBy)
   ;

★★의 orderBy 노트: " " " " "Keys are field and values are the order, being either ASC or DESC. 돼요.orderBy->(['field' => Criteria::ASC]).

언급URL : https://stackoverflow.com/questions/11575325/order-by-multiple-columns-with-doctrine

반응형