Laravel count() вместе с groupBy() и having()

Небольшая заметка про использование в Eloquent count вместе с groupBy.

Тут всё дело в особенности работы count() вместе с groupBy(). Подробнее можно почитать тут.

Вкратце дело вот в чём. Если использовать ->get()->count(), то идёт подсчёт элементов коллекции и мы получаем нужный результат. А вот если просто ->count() (без ->get()), то чистый запрос будет вида select count(*) as aggregate ..., что вместе с having даёт нам неверный результат.

Как вариант решения можно вместо ->get()->count() использовать ->getCountForPagination(), но это уже не так явно и может быть проблемой при поддержке кода.