Doctrine 2의 ORDER BY 절과 함께 MySQL FIELD 함수를 어떻게 사용할 수 있습니까?

Susan Sarandon
풀어 주다: 2024-10-28 20:11:30
원래의
246명이 탐색했습니다.

How can I use the MySQL FIELD function with Doctrine 2's ORDER BY clause?

Order By의 Doctrine 2 MySQL FIELD 함수

Doctrine 2 쿼리의 order by 절에서 SQL FIELD 함수를 활용하려고 할 때 , 본질적으로 이 기능에 대한 지원 부족으로 인해 제한이 발생할 수 있습니다.

FIELD에 대한 Doctrine 2 확장이 있습니까?

다행히 Doctrine 2가 있습니다. FIELD 기능을 추가하는 Jeremy Hicks가 개발한 확장 프로그램입니다. 이 확장 기능을 통합하려면 아래 단계를 따르세요.

  1. Composer를 사용하여 확장 기능을 설치하세요.

    composer require doctrine-extensions/doctrine-extensions
    로그인 후 복사
  2. Doctrine 구성에 확장 기능을 추가하세요. :

    <code class="php">$doctrineConfig = $em->getConfiguration();
    $doctrineConfig->addCustomStringFunction('FIELD', 'DoctrineExtensions\Query\Mysql\Field');</code>
    로그인 후 복사

제한: FIELD Order By Clause 제한

확장을 통해 FIELD 기능을 활성화하더라도 Doctrine 2에는 여전히 제한 사항이 있습니다. . FIELD 함수는 order by 절에서 직접 사용할 수 없습니다.

해결책: HIDDEN 별칭 활용

이 제한을 우회하려면 HIDDEN 필드 별칭을 사용할 수 있습니다. 쿼리에서:

<code class="php">$qb
    ->select("r, FIELD(r.id, " . implode(", ", $ids) . ") as HIDDEN field")
    ->from("Entities\Round", "r")
    ->where($qb->expr()->in("r.id", $ids))
    ->orderBy("field");</code>
로그인 후 복사

설명:

  • HIDDEN 키워드를 사용하면 필드 별칭이 결과 행에 표시되지 않습니다.
  • HIDDEN 필드를 정렬하면 FIELD 함수에서 반환된 값에 따라 효과적으로 정렬됩니다.

이 해결 방법을 사용하면 HIDDEN 필드에 부과된 제한에도 불구하고 Doctrine 2.2의 IN 식 내에서 값을 정렬할 수 있습니다. order by 절의 FIELD 함수.

위 내용은 Doctrine 2의 ORDER BY 절과 함께 MySQL FIELD 함수를 어떻게 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!