2017-01-21 5 views
0

Я не могу понять это, так как 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, показанный выше, дает мне последнее сообщение, а не весь разговор.

Заранее благодарим за помощь.

ответ

0

Во-первых, я думаю, вы должны сохранить функцию отношений отдельно от логической (запроса) функции. Если я правильно понял ваш вопрос, вы должны сделать что-то вроде этого:

Message::where('recipient_id',$userid)->orWhere('author_id',$userid)->orderBy('created_at','desc')->get(); 

Это даст вам сообщение или отправить полученный пользователем. Пожалуйста, уточните свой вопрос с помощью моделей Author и Message, если это не то, что вы хотите.

+0

Я сделал это, но это дает мне дубликаты записей в массиве. Если идентификатор получателя id == $ user id и если author_id == $ user id, он будет генерировать два дубликата, я попытался groupBy recipient_id, но это пропущено author_id и наоборот. Я надеюсь, что это имеет смысл – max234435

+0

Мне почти нужно группировать получателем и author_id в то же время ... – max234435