1
我正在使用laravel框架5.3。执行查询后,我得到一个错误的结果。我有两个表一个是用户和其他的message.Here是我的方案如何从消息表中与每个其他用户的所有会话中获取最后一条消息?
enter code here
User table-
id name
1 a
2 b
3 c
Message table:
id sender_id receiver_id message
1 1 2 hii
2 2 1 hello
3 1 3 hiiii
现在我想获取这些用户有SENDER_ID这里receiver_id 之间的最后一条消息是我的代码: -
enter code here
$coreQueryUser=DB::select(
'
select m.* ,u.*
from
messages m
inner join (
select max(id) as maxid
from messages
where messages.sender_id = 1 // here i am sending userid is 1
group By (if(sender_id > receiver_id, sender_id, receiver_id)),
(if(sender_id > receiver_id, receiver_id, sender_id))
) t1 on m.id=t1.maxid
join
users u ON u.id = (CASE WHEN m.sender_id = 1
THEN m.sender_id
ELSE m.receiver_id
END)
'
);
注意 - 我想找到所有已与用户ID(1)提前:)
我想查询一样,将取回的所有对话用户标识为1的最后一条消息 –