질문: Eloquent ORM을 사용하여 SQL 하위 쿼리에서 집계 값을 검색합니다.
초기 방법:
<code class="language-php">$sql = Abc::from('abc AS a') ->groupBy('col1') ->toSql(); $num = Abc::from(\DB::raw($sql)) ->count();</code>
이 접근 방식을 사용하려면 하위 쿼리 SQL을 수동으로 생성해야 하는데 이는 이상적이지 않습니다.
최상의 솔루션:
현재 Laravel 쿼리 빌더에는 FROM 절에 하위 쿼리를 생성하는 전용 방법이 없습니다. 원시 문은 적절한 바인딩 관리와 함께 수동으로 사용해야 합니다.
<code class="language-php">// 定义子查询 $sub = Abc::where(...)->groupBy(...); // Eloquent Builder 实例 // 创建主查询 $count = DB::table(DB::raw("({$sub->toSql()}) AS sub")) ->mergeBindings($sub->getQuery()) // 正确合并绑定 ->count();</code>
참고: 바인딩은 올바른 순서로 병합되어야 합니다. 병합 후 추가 조건이 추가되면 올바른 바인딩을 보장하기 위해 순서를 조정해야 합니다.
위 내용은 Laravel의 쿼리 빌더를 사용하여 하위 쿼리에서 효율적으로 선택하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!