"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Laravel의 쿼리 빌더를 사용하여 하위 쿼리 중에서 효율적으로 선택하려면 어떻게해야합니까?

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

2025-03-23에 게시되었습니다
검색:661

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

Laravel Query 생성자는 하위 쿼리를 효율적으로 처리합니다

]

Eloquent ORM을 사용하여 하위 Queries에서 데이터를 검색 할 때 개발자는 종종 toSql () 및 기본 쿼리를 조합하여 사용합니다. 이 방법은 효과적이지만 직관적이지는 않습니다. 다음은보다 효율적인 솔루션입니다.

예를 들어, 다음 하위 퀘스트에서 결과 수를 추출하려면 :

SELECT COUNT(*) 
FROM (
  SELECT * 
  FROM abc 
  GROUP BY col1
) AS a;

Laravel을 사용하면 mergebindings 를 사용하여 기본 쿼리를 웅변 쿼리로 병합 할 수 있습니다. 먼저, 우리는 하위 퀘스트에 대한 웅변적인 빌더 인스턴스를 만듭니다 :

$sub = Abc::where(..)->groupBy(..);

그런 다음, 우리는 db :: 테이블 를 사용하여 서브 쿼리를 참조하고 해당 바인딩을 수동으로 설정하는 새 테이블을 만듭니다 :

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

이 접근법은 올바른 바인딩이 병합 쿼리에 적용되도록하여 문자열 작업을 수동으로 수행하지 않고 원하는 결과를 얻습니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3