Php 如何在sql中通过列表分隔私人聊天消息?
我想从此表中检索聊天,该表将由列表id分隔。这是我的表: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 | 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
基本上,发生了两件事:
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”的意义是什么?不清楚它与聊天有什么关系。