Я хочу получить список пользователей отправленных сообщений
я использую users_id
хранить идентификатор получателя и sender_id
чтобы сохранить идентификатор отправителя, я хочу, чтобы отобразить список пользователей сообщения, как в WhatsApp или в FB Messenger
Я пытался использовать
$message = Messages::whereRaw("(sender_id, `users_id`, `created_at`) IN (
SELECT sender_id, `users_id`, MAX(`created_at`)
FROM messages
WHERE `users_id`=$userId
or `sender_id`=$userId
GROUP BY sender_id, `users_id`)")
->skip($start)->take(51)
->orderBy('created_at','desc')
->get();
Это выбирает данные последних двух разговоров между этими пользователями
Есть ли способ получить последние сохраненные данные, отправленные или полученные пользователем?
После нескольких попыток я создал поле для conversationId
и сгруппировал сообщения под этим идентификатором так, чтобы есть только один уникальный conversationId
между двумя пользователями
$message = Messages::whereRaw("(sender_id, `users_id`, `created_at`) IN (
SELECT sender_id, `users_id`, MAX(`created_at`)
FROM messages
WHERE `users_id`=$userId
or `sender_id`=$userId
GROUP BY conversationId)")
->skip($start)->take(50)
->orderBy('created_at','desc')
->get();
Идентификатор беседы создается, если между двумя пользователями нет существующей беседы.
Других решений пока нет …