원칙이 있는 여러 열로 정렬
데이터를 두 열로 정렬해야 합니다(행의 값이 다른 경우 1열로 정렬하고, 그렇지 않은 경우 2열로 정렬).
사용하고 있습니다.QueryBuilder
쿼리를 만듭니다.
전화하면orderBy
두 번째 방법은 이전에 지정된 순서를 대체합니다.
첫 번째 매개 변수로 두 개의 열을 전달할 수 있습니다.
->orderBy('r.firstColumn, r.secondColumn', 'DESC');
그러나 두 번째 파라미터의 순서 지정 방향은 전달할 수 없기 때문에 이 쿼리를 실행하면 첫 번째 열은 오름차순, 두 번째 열은 내림차순으로 정렬됩니다.둘 다 내림차순을 사용하고 싶습니다.
이 작업을 할 수 있는 방법이 있나요?QueryBuilder
DQL을 사용해야 합니까?
다음 열 이름 바로 뒤에 주문 방향을 추가해야 합니다.
$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')
그orderBy
method에는 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
'programing' 카테고리의 다른 글
Javascript에서 숫자를 반올림하려면 어떻게 해야 하나요? (0) | 2022.09.21 |
---|---|
SQLite 대신 MySQL을 사용하여 새 Ruby on Rails 응용 프로그램 만들기 (0) | 2022.09.21 |
자바의 정수 분할 (0) | 2022.09.21 |
유형 ORM 대량 삽입? (0) | 2022.09.21 |
memory_get_peak_memory()와 "실제 사용" (0) | 2022.09.21 |