Как оптимизировать эти запросы на Laravel?
Насколько я помню, ->get() делает запрос к базе и возвращает коллекцию. А это куча данных и ваш проект будет умирать, пользуйтесь groupBy как часть запроса и расчитывайте на стороне БД до вызова get(), а не после, когда вы уже работаете не с квери билдером, а с огромной коллекцией.
Напиши оптимизированные запросы в базу. Группирование обязательно на стороне запроса. 99% что это решит твою проблему, ибо данных у тебя точно не много. А если вдруг, то експлейн и индексы в помощь.