2014-07-22 41 views
11

GrupBy işleviyle toplam almak için elverişli/akıcı sorguya gereksinim duyuyor.Laravel Eloquent: groupBy ile toplam

Şimdiye kadar ben denedim:

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

Hangi tabii çünkü toplamı() zaten sorguyu yürütmek ve uygulandığı zaman grouBy() tarafından hazır sonuçlanacaktır olacağı gerçeği bana call to member function groupBy() on non-object verir. Yani bana rehberlik edebilir mi?

cevap

23
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, 
    ... 
) 

Veya (o olmayacak çünkü gerçek ORM sonucunu kullanmak ister) bu şekilde:

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

// returns collection of Document pseudo models with additional sum field 
+3

Not: '-> listeleri()' 'yeniden adlandırıldı -> laravel'den beri pluck() '5.2. – Fx32

+1

@ Fx32 true, teşekkürler. ilgili güncelleme eklendi –