gpt4 book ai didi

mysql - 按最新消息进行群组对话 Laravel

转载 作者:行者123 更新时间:2023-11-29 19:31:10 24 4
gpt4 key购买 nike

我似乎无法弄清楚这一点,因为 mysql 不是我的强项。我在这里做了一些研究,但无法将两个和两个放在一起,因此我向社区寻求帮助。

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

以下内容位于我的用户模型中:

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_idmessagingviewed

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

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

预先感谢您的所有帮助。

最佳答案

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

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

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

关于mysql - 按最新消息进行群组对话 Laravel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41775025/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com