TL;DR: Need latest message from each sender.
In my Laravel application I have two tables:
Users:
Messages:
this may be a solution (not tested though)
User::with([ 'messages' => function ($q) { $q->select('sender_id', 'body')->groupBy('sender_id')->orderBy('created_at', 'desc'); } ])->find(1);