>데이터 베이스 >MySQL 튜토리얼 >Laravel Eloquent에서 GroupBy를 사용하여 합계 집계를 효율적으로 수행하는 방법은 무엇입니까?

Laravel Eloquent에서 GroupBy를 사용하여 합계 집계를 효율적으로 수행하는 방법은 무엇입니까?

DDD
DDD원래의
2025-01-03 08:25:381037검색

How to Efficiently Perform Sum Aggregations with GroupBy in Laravel Eloquent?

Laravel Eloquent에서 GroupBy를 사용한 합계 집계

소개:
Laravel의 Eloquent ORM은 데이터 베이스. 대규모 데이터 세트로 작업할 때 데이터를 그룹화하고 합계와 같은 집계를 수행해야 합니다.

문제 설명:
제공된 코드는 users_editor_id로 그룹화된 no_of_pages의 합계를 계산하려고 시도합니다. Eloquent의 sum() 및 groupBy() 메소드를 사용합니다. 그러나 이 접근 방식은 groupBy()가 적용되기 전에 sum()이 쿼리를 실행하고 결과를 반환한다는 사실로 인해 실패합니다.

해결책:

해결 방법 이 문제에서는 groupBy() 및 selectRaw() 메서드를 조합하여 사용할 수 있습니다. 업데이트된 솔루션은 다음과 같습니다.

Document::groupBy('users_editor_id')
   ->selectRaw('sum(no_of_pages) as sum, users_editor_id')
   ->pluck('sum','users_editor_id');

설명:

  • groupBy('users_editor_id'): users_editor_id 열을 기준으로 행을 그룹화합니다.
  • selectRaw('sum(no_of_pages)를 합계로, users_editor_id'): 결과에 sum이라는 새 열을 추가합니다. 여기에는 각 그룹의 no_of_pages 합계가 포함됩니다.
  • pluck('sum','users_editor_id'): sum 및 users_editor_id 값을 검색하여 반환합니다. 배열로.

대안 해결 방법:

또 다른 접근 방식은 get()과 함께 selectRaw() 메서드를 사용하여 의사 ORM 모델 모음을 반환하는 것입니다.

Document::groupBy('users_editor_id')
   ->selectRaw('*, sum(no_of_pages) as sum')
   ->get();

이 메서드는 합계를 더합니다. 열을 각 결과 모델에 추가하여 일반 모델처럼 액세스할 수 있습니다.

결론:

groupBy(), selectRaw(), pluck() 메소드를 활용하면 Laravel Eloquent에서 그룹화를 통해 합계 집계를 효율적으로 수행할 수 있습니다. . 이러한 기술을 통해 대규모 데이터 세트를 효과적으로 처리하고 데이터에서 귀중한 통찰력을 얻을 수 있습니다.

위 내용은 Laravel Eloquent에서 GroupBy를 사용하여 합계 집계를 효율적으로 수행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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