>데이터 베이스 >MySQL 튜토리얼 >Laravel의 쿼리 빌더를 사용하여 하위 쿼리에서 효율적으로 선택하려면 어떻게 해야 합니까?

Laravel의 쿼리 빌더를 사용하여 하위 쿼리에서 효율적으로 선택하려면 어떻게 해야 합니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-12 09:28:41784검색

How Can I Efficiently Select from Subqueries Using Laravel's Query Builder?

Laravel 쿼리 빌더는 하위 쿼리를 효율적으로 처리합니다

Eloquent ORM을 사용하여 하위 쿼리에서 데이터를 검색할 때 개발자는 종종 toSql() 및 기본 쿼리를 조합하여 사용합니다. 이 접근 방식은 작동하지만 충분히 직관적이지 않습니다. 보다 효율적인 솔루션은 여기에서 제공됩니다:

예를 들어 다음 하위 쿼리에서 결과 개수를 추출하려면:

<code class="language-sql">SELECT COUNT(*) 
FROM (
  SELECT * 
  FROM abc 
  GROUP BY col1
) AS a;</code>

Laravel을 사용하면 mergeBindings을 사용하여 기본 쿼리를 Eloquent 쿼리로 병합할 수 있습니다. 먼저 하위 쿼리에 대한 Eloquent Builder 인스턴스를 만듭니다.

<code class="language-php">$sub = Abc::where(..)->groupBy(..);</code>

그런 다음 DB::table을 사용하여 하위 쿼리를 참조하는 새 테이블을 만들고 해당 바인딩을 수동으로 설정합니다.

<code class="language-php">$count = DB::table( DB::raw("({$sub->toSql()}) as sub") )
    ->mergeBindings($sub->getQuery()) // 获取底层查询构造器
    ->count();</code>

이 접근 방식을 사용하면 병합된 쿼리에 올바른 바인딩이 적용되어 수동으로 문자열을 조작할 필요 없이 원하는 결과를 얻을 수 있습니다.

위 내용은 Laravel의 쿼리 빌더를 사용하여 하위 쿼리에서 효율적으로 선택하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.