Php 如何在sql中通过列表分隔私人聊天消息?

Php 如何在sql中通过列表分隔私人聊天消息?,php,mysql,sql,database,laravel,Php,Mysql,Sql,Database,Laravel,我想从此表中检索聊天,该表将由列表id分隔。这是我的表: id | listing_id | sender_id | receipient_id | message | created_at 1 | 1 | 1 | 2 | Hi. | 27-05-2021 09:05PM 2 | 1 | 2 | 1 | Hi, how're you

我想从此表中检索聊天,该表将由列表id分隔。这是我的表:

id | listing_id | sender_id | receipient_id | message          | created_at

1  | 1          | 1         | 2             | Hi.              | 27-05-2021 09:05PM
2  | 1          | 2         | 1             | Hi, how're you?  | 27-05-2021 09:07PM
3  | 2          | 1         | 2             | Another listing. | 27-05-2021 09:10PM
我希望检索如下结果:

id | listing_id | sender_id | receipient_id | message          | created_at

2  | 1          | 2         | 1             | Hi, how're you?  | 27-05-2021 09:07PM
3  | 2          | 1         | 2             | Another listing. | 27-05-2021 09:10PM
基本上,发生了两件事:

  • 通过最近的一行获取聊天的发件人和收件人(这就是前两行被分组的原因,因为它是最新的,所以只显示第二行)
  • 尽管发送者和接收者是相同的,但根据列表id对聊天进行分组
  • listing\u id
    :在该应用程序中,人们可以发布他们的广告,当用户想要查询广告时,他/她可以发起聊天。发布者可以看到分组在广告下的聊天

    我想知道有关SQL查询和Laravel的信息。那么,你能告诉我如何从MySQL获取这个吗?你能给我看看检索这个结果的Laravel代码吗

    提前谢谢

    类似的事

    class User extends Model
    {
        public function chatPreviews()
        {
            return $this->hasOne(PrivateMessage::class)->latestOfMany();
        }
    }
    

    预期结果所做的只是从结果中排除第一行。不清楚您为什么要这样做,这也不是任何类型的分组。你的请求没有多大意义……也许要仔细检查一下你写的东西,以防它不是你真正想要的。@ADyson哦,我是按最新一行选择的。
    我是按最新一行选择的。
    …我想你是指每个发件人的最新信息吧?你是如何定义的?因为您显示的数据没有任何东西可以让您定义顺序(可能除了ID之外,但是您可能无法依赖ID进行排序,这取决于某些因素)。你不是在每条信息上都贴上时间戳吗?@ADyson是的,我明白了。因为我不是DBA,所以我更难理解SQL。我只是想知道策略。我已经研究了好几个小时,但都失败了。还有,你如何定义“聊天”…它仅仅是指在每一行中出现相同的发件人/收件人组合吗?这很难查询,因为根据发送人的不同,这些值是反向的。最好使用另一个ID来包含该特定关系。“清单id”的意义是什么?不清楚它与聊天有什么关系。