我一直试图在stackoverflow上多次问这个问题,但似乎无法得到任何帮助。也许第三次是魅力。
我在laravel app中构建了一个聊天功能,而我正努力让收件箱部分正确。我在这里读了很多其他线程但是mysql不是我最强的套装,所以我有一个问题。
基本上,我收到此查询是为了向我发送最后一条消息,该消息刚刚通知我显示在我的收件箱中。问题是,如果我是向另一个用户发送消息的人,它将不会在我的收件箱中显示任何内容,因为我是作者而不是收件人。如何使此查询显示来自收件箱中其他用户的最新消息,并显示我已开始与其他用户进行对话。
$chat_inbox = Message::where('author_id', $this->user->id)
->orWhere('recipient_id', $this->user->id)
->join(DB::raw('(Select max(id) as id from messages where author_id ='.$this->user->id.' group by unique_chat_id) LatestMessage'), function($join) {
$join->on('messages.id', '=', 'LatestMessage.id');
})
->get();
Mysql表列是:unique_chat_id,author_id,recipient_id,Viewed,user_read,created_at和updated_at
如果您需要任何进一步的详细信息,请告知我们。提前谢谢!
以下是我的Message模型:
class Message extends Model {
protected $table = 'messages';
protected $fillable = [
'unique_chat_id',
'author_id',
'recipient_id',
'message',
'viewed',
'user_read',
];
}