Ok I got it:
DB::table(DB::raw('chats C1'))
->select('C1.chat_title','C1.chat_object','C1.created_at','C1.id',DB::raw('MAX(C1.message) AS messages'),'C2.unread','C1.group_id')
->join(DB::raw('(SELECT
C2.created_at,
C2.chat_object,
SUM(IF(C2.admin_read = 0, 1, 0)) AS unread
FROM chats C2
GROUP BY C2.chat_object) C2'),'C1.chat_object','=','C2.chat_object')
->where('C1.group_id','=',82)
->groupBy(['C1.chat_object','C1.group_id'])
->orderBy('C1.id','DESC')
->paginate();
I cannot believe how much I struggled for a full day on this!