最新消息Laravel的群组对话

时间:2017-01-21 02:01:20

标签: mysql laravel laravel-5.1

我似乎无法解决这个问题,因为mysql不是我的强项。我在这里做了一些研究,但不能把两个和两个放在一起,所以我转向社区寻求帮助。

我正在我的Laravel应用程序中构建聊天功能,其中两个用户可以互相交谈。我无法弄清楚如何构建收件箱(将对话组合在一起)的一部分。我已经弄明白了如何通过发送最后一条消息进行分组。

以下内容属于User模型:

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_idrecipient_idmessagedviewed

我需要做的是分组消息,无论是传入我们的传出消息还是将最新消息显示为收件箱条目,一旦我点击该消息,其余的对话就会弹出页面。

我上面显示的当前sql只给出了最后一条消息,而不是整个对话。

提前感谢所有帮助。

1 个答案:

答案 0 :(得分:0)

首先,我认为你应该将关系函数与逻辑(查询)函数分开。 如果我理解你的问题,你应该这样做:

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

这将为您提供用户发送或接收的消息。如果这不是您想要的,请使用AuthorMessage模型澄清您的问题。