집 >데이터 베이스 >MySQL 튜토리얼 >Laravel의 쿼리 빌더를 사용하여 하위 쿼리에서 효율적으로 선택하려면 어떻게 해야 합니까?
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!