一个用户和和多其他用户有私信来往,怎样在显示私信列表时按联系人分组显示
我现在有这样一个需求,这个网站有多个用户,用户之间可以相互发私信。当用户进入自己的私信列表页面时,列表是按联系人的分组显示的。并且在列表上显示他俩之间最后一条回复信息。
现在私信表有 from_user_id 字段(发信人的用户 id), to_user_id(收信人的用户 id),content字段(私信内容)。我试过这样的方式查询。
$id = Auth::id(); //我的用户id
//Message 是私信模型
Message::where('from_user_id', $id)->orWhere('to_user_id', $id)->groupBy('from_user_id','to_user_id')->get()
但是返回的结果不是我想要的。因为里面包含同一个用户发给的信息。比方说我的用户 id 是 10, 我给 id 为 20 的用户发过信息,他也给我回复过,查询结果里面就会有两条(一条是我发给他的, 另一条是他发给我的)。但是我想让这两条分在一组里。不知道该怎么办?我想尝试在表里新增一个字段,比如叫 group。然后每次插入数据时,根据两个用户的 id 排序, 例如 我的 id 是 10,对方 id 是 20 ,然后把这个字段的值设为 10-20 .多方给我回复时,也把这个字段的值设为 10-20。这样查询时按 这个 group 字段分组。不知道这样是不是很 low?
推荐文章: