Doctrine을 사용하여 여러 열로 정렬
두 개의 열로 데이터를 정렬해야합니다 (행에 열 번호 1에 대해 다른 값이있는 경우 순서대로, 그렇지 않으면 열 번호 2로 정렬)
내가 사용하고 QueryBuilder
쿼리를 만들 수 있습니다.
orderBy
메서드를 두 번 호출하면 이전에 지정된 순서를 대체합니다.
첫 번째 매개 변수로 두 개의 열을 전달할 수 있습니다.
->orderBy('r.firstColumn, r.secondColumn', 'DESC');
그러나 두 번째 매개 변수에 대해 두 개의 순서 지정 방향을 전달할 수 없으므로이 쿼리를 실행할 때 첫 번째 열은 오름차순으로 정렬되고 두 번째 열은 내림차순으로 정렬됩니다. 둘 다 내림차순을 사용하고 싶습니다.
이것을 사용하는 방법이 QueryBuilder
있습니까? DQL을 사용해야합니까?
열 이름 바로 뒤에 주문 방향을 추가해야합니다.
$qb->orderBy('column1 ASC, column2 DESC');
앞서 언급했듯이 여러 호출은 orderBy
누적되지 않지만 다음을 여러 번 호출 할 수 있습니다 addOrderBy
.
$qb->addOrderBy('column1', 'ASC')
->addOrderBy('column2', 'DESC');
Doctrine 2.x에서는 위의 예와 같이 'orderBy'또는 'addOrderBy'교리를 사용하여 여러 주문을 전달할 수 없습니다. 왜냐하면 'orderBy'함수에서와 같이 두 번째 매개 변수를 비워두면 마지막 열 이름 끝에 'ASC'가 자동으로 추가되기 때문입니다.
예를 들어 ->orderBy('a.fist_name ASC, a.last_name ASC')
'ORDER BY first_name ASC, last_name ASC 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
소스 코드 메모에 대한 주석 : 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
'IT박스' 카테고리의 다른 글
new self ();는 무엇을합니까? (0) | 2020.08.13 |
---|---|
번호에서 유니 코드 문자 만들기 (0) | 2020.08.13 |
템플릿의 Angular 2 해시 태그는 무엇을 의미합니까? (0) | 2020.08.13 |
웹 사이트에 인도 통화 기호 표시 (0) | 2020.08.13 |
.NET Core에서 비동기 콘솔 애플리케이션이 지원 되나요? (0) | 2020.08.13 |