Order By의 Doctrine 2 MySQL FIELD 함수
Doctrine 2 쿼리의 order by 절에서 SQL FIELD 함수를 활용하려고 할 때 , 본질적으로 이 기능에 대한 지원 부족으로 인해 제한이 발생할 수 있습니다.
FIELD에 대한 Doctrine 2 확장이 있습니까?
다행히 Doctrine 2가 있습니다. FIELD 기능을 추가하는 Jeremy Hicks가 개발한 확장 프로그램입니다. 이 확장 기능을 통합하려면 아래 단계를 따르세요.
Composer를 사용하여 확장 기능을 설치하세요.
composer require doctrine-extensions/doctrine-extensions
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 필드에 부과된 제한에도 불구하고 Doctrine 2.2의 IN 식 내에서 값을 정렬할 수 있습니다. order by 절의 FIELD 함수.
위 내용은 Doctrine 2의 ORDER BY 절과 함께 MySQL FIELD 함수를 어떻게 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!