복붙노트

[SQL] Laravel 웅변 : GROUPBY와 합

SQL

Laravel 웅변 : GROUPBY와 합

필요에 설득력 / 유창 쿼리는 GROUPBY 기능 합계를 얻을 수 있습니다.

지금까지 나는 시도했다 :

    $this->data['no_of_pages'] = Document::sum('no_of_pages')
                                ->groupBy('users_editor_id');

어느 당연히 나 때문에 합계 ()가 이미 쿼리를 실행하고 적용되는 시간 grouBy ()에 의해 준비 될 것이다는 사실이 아닌 개체의 멤버 함수 GROUPBY ()를 호출 할 수 있습니다. 깡통 사람이 나를 인도 그래서?

해결법

  1. ==============================

    1.

    Document::groupBy('users_editor_id')
       ->selectRaw('sum(no_of_pages) as sum, users_editor_id')
       ->pluck('sum','users_editor_id');
    
       // originally lists(), which was deprecated in favour of pluck in 5.2
       // and dropped completely in 5.3
       // ->lists('sum','users_editor_id');
    
    
    // returns array like this:
    array(
      users_editor_id => sum,
      ...
    )
    

    아니면 이런 식으로 (그것이 실제 ORM 결과되지 않습니다 때문에 내가 사용하지 것이다) :

    Document::groupBy('users_editor_id')
       ->selectRaw('*, sum(no_of_pages) as sum')
       ->get();
    
    // returns collection of Document pseudo models with additional sum field
    
  2. ==============================

    2.

    Document::Where('some_condition',true)
       ->select([DB::raw("SUM(debit) as total_debit"), DB::raw("SUM(credit) as total_credit")])
       ->groupBy('id')
       ->get()
    
    
    
  3. from https://stackoverflow.com/questions/24887708/laravel-eloquent-sum-with-groupby by cc-by-sa and MIT license