Я не могу понять это, так как mysql не мой сильный костюм. Я провел здесь немного исследований, но не могу поставить два и два вместе, поэтому я обращаюсь к сообществу за помощью.Группа Разговоры по последнему сообщению Laravel
Я создаю функцию чата внутри своего приложения Laravel, где два пользователя могут разговаривать друг с другом. Я не могу понять, как создать часть входящих сообщений (объединить беседы). Я выяснил, как получить последнее сообщение, сгруппированное, отправив его.
Следующая внутри моей User
Model:
public function lastMessages() {
return $this->hasMany('App\Message', 'recipient_id')
->select('*')
->join(DB::raw('(Select max(id) as id from messages group by author_id) LatestMessage'), function($join) {
$join->on('messages.id', '=', 'LatestMessage.id');
})
->orderBy('created_at', 'desc');
}
Мои сообщения Таблица состоит из следующих действий: author_id
, recipient_id
, messaged
, viewed
.
Что мне нужно сделать, это групповые сообщения, независимо от того, поступают ли они на исходящие и отображают последнее сообщение как запись в ящике, и как только я нажимаю на эти сообщения, остальная часть разговора появляется на странице.
Мой текущий sql, показанный выше, дает мне последнее сообщение, а не весь разговор.
Заранее благодарим за помощь.
Я сделал это, но это дает мне дубликаты записей в массиве. Если идентификатор получателя id == $ user id и если author_id == $ user id, он будет генерировать два дубликата, я попытался groupBy recipient_id, но это пропущено author_id и наоборот. Я надеюсь, что это имеет смысл – max234435
Мне почти нужно группировать получателем и author_id в то же время ... – max234435