Laravel Eloquent: сумма с groupBy

Требуется красноречивый/свободный запрос, чтобы получить сумму с помощью функции groupBy.

До сих пор я пробовал:

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

Какой из них дает мне call to member function groupBy() on non-object из-за того, что sum() уже выполнит запрос и будет готов к результату, когда будет применен метод grouBy(). Так может ли кто-нибудь вести меня?

Ответ 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