when I group by date I also need to use get
Why? You can use ->first() with ->groupBy() just fine. I would only add a ->orderBy(), or a ->where() clause to ensure you always get the same date back.
->first() just adds ->take(1), runs ->get() and unpack the first record from the returned collection. You can check this on Laravel's source code:
So there is not place you can use ->get() that you cannot use ->first().
Your first query using ->groupBy() should work fine with ->first()