我正在寻找用户之间所有消息的列表,但只有
user A
或 user B
在数据库中发送的最新消息这些字段是 fromUser
和 toUser
我需要每个用户之间的最新消息列表。
例如:
来自用户 | 对用户 | 留言 | date(这将是一个有效的日期 iso 时间字符串) |
---|---|---|---|
1 | 2 | “你好” | 6天前 |
1 | 3 | “你好兄弟” | 1天前 |
2 | 1 | “嗨管理员” | 5分钟前 |
我想得到以下列表
用户对 | 留言 |
---|---|
2, 1 | “嗨管理员” |
1, 3 | “你好兄弟” |
但我希望 userPair 只包含其他用户而不是我自己的用户,我自己的用户 ID 将是 1
您可以运行此查询。
auth()->user()->id
是你要在userPair中过滤的id。
use DB;
Message::orderBy('date', 'desc')
->where(function($q){
$q->where('fromUser', auth()->user()->id)
->orWheere('toUser', auth()->user()->id);
})
->select(
'message',
DB::raw("IF(fromUser = ?, toUser, fromUser) as user", [auth()->user()->id]),
'CONCATENATE(fromUser, ",", toUser) as users' // If you want to select the exact pair you have specified in question
)
->get();