У меня есть таблица сообщений, которая выглядит следующим образом:
ID
user_id
target_user_id
сообщение
Я бы хотел сгруппировать их по разговору.
Так что некоторые типичные записи могут выглядеть так:
#1
user_id = 5
target_user_id = 10
message = hello
#2
user_id = 10
target_user_id = 5
message = hello
#3
user_id = 15
target_user_id = 20
message = hello
#2
user_id = 15
target_user_id = 20
message = hello
Чего я хотел бы добиться, так это как я могу сгруппировать все свои записи так, чтобы все сообщения между пользователем 5 и 10, например, были в группе, а 15 и 20 - в группе и сортировались по последним.
Это моя текущая попытка:
$msgs = Message::with('user')
->where(function($q) {
$q->where('user_id', Auth::user()->id)
->orWhere('target_user_id', Auth::user()->id);
})
->groupBy('user_id', 'target_user_id')
->get();
Это не дубликат, поскольку проблема и вопрос очень разные, и в предложенном решении есть то, что я уже пробовал выше, если вы видите это.