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