Eloquent를 사용하여 Laravel에서 Sum 및 Group by하는 방법
이 쿼리의 목표는 Eloquent를 사용하여 다른 열을 기준으로 결과를 그룹화하는 동안 특정 열. no_of_pages 열의 합계를 users_editor_id로 그룹화해야 하는 질문에 제공된 예는 실용적인 예시 역할을 합니다.
질문에 제공된 초기 시도에는 논리적 문제가 있습니다. sum()은 즉시 쿼리를 실행하고 결과를 반환하므로 쿼리가 이미 처리된 후에 그룹화를 시도합니다. Laravel은 쿼리 실행 후 그룹화 적용을 지원하지 않으므로 오류가 발생합니다.
이 문제를 해결하려면 쿼리 구조를 변경해야 합니다. sum() 다음에 groupBy()를 사용하는 대신, groupBy('users_editor_id')를 사용하여 결과를 그룹화하는 것부터 시작하세요. 이렇게 하면 각각의 고유한 users_editor_id 값에 대한 하위 쿼리가 효과적으로 생성됩니다.
다음으로, selectRaw() 절을 추가하여 그룹화된 결과에서 관심 있는 열을 지정합니다. 이 경우 집계된 합계입니다. sum(no_of_pages)를 sum으로 사용합니다.
마지막으로 pluck()를 사용하여 결과에서 sum 및 users_editor_id 열만 추출합니다. 그러면 users_editor_id가 키이고 해당 합계가 값인 배열이 반환됩니다.
수정된 쿼리는 다음과 같습니다.
Document::groupBy('users_editor_id') ->selectRaw('sum(no_of_pages) as sum, users_editor_id') ->pluck('sum','users_editor_id');
대체 접근 방식은 selectRaw() 절을 사용하여 하위 쿼리에 추가 열로 sum(no_of_pages)을 포함합니다. 그러나 이 방법은 원래 열과 계산된 합계를 추가 필드로 포함하는 의사 모델 컬렉션을 생성합니다.
Document::groupBy('users_editor_id') ->selectRaw('*, sum(no_of_pages) as sum') ->get();
위 내용은 Laravel Eloquent에서 데이터를 효율적으로 합산하고 그룹화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!