我有一个如下所示的消息表:
身份证件
用户id
目标用户id
消息
我想做的是通过对话来分组。
所以一些典型的记录可以是这样的:
# 1
user_id = 5
target_user_id = 10
message = hello
# 2
user_id = 10
target_user_id = 5
message = hello
# 3
user_id = 15
target_user_id = 20
message = hello
# 2
user_id = 15
target_user_id = 20
message = hello
我想实现的是如何将所有记录组合在一起,以便用户5和10之间的所有消息(例如)都在一个组中,15和20之间的所有消息都在一个组中,并按最新消息排序。
这是我目前的尝试:
$msgs = Message::with('user')
->where(function($q) {
$q->where('user_id', Auth::user()->id)
->orWhere('target_user_id', Auth::user()->id);
})
->groupBy('user_id', 'target_user_id')
->get();
这不是一个重复,因为问题和问题是非常不同的,解决方案建议有什么我已经尝试了以上,如果你能看到。
1条答案
按热度按时间0pizxfdo1#
我想你可以这样把他们分组: