嗨,我有一个表名称messages
,我想从两个用户之间的聊天对话中获取最后一条消息。
表 -
id from_id to_id text created
========================================
1 1 2 hi 2014-12-01 10:30:10
2 2 1 Hello 2014-12-01 10:30:20
3 3 1 Hi chinu 2014-12-01 10:32:02
4 3 1 hw r u? 2014-12-01 10:32:22
5 2 1 h r u? 2014-12-01 10:33:01
请检查我的查询=
//$user_id=$this->Session->read('Auth.User.id');
$user_id=1;
$fields=array('DISTINCT(Message.from_id), Message.id, Message.text, Message.created');
$this->Paginator->settings = array(
'conditions'=>array('Message.to_id'=>$user_id),
'limit' => 30,
'order' => array(
'Message.created' => 'DESC',
'Message.id' => 'DESC'
),
'fields'=>$fields,
'group'=>array('Message.from_id')
);
$inbox = $this->Paginator->paginate('Message');
pr($inbox);
$this->set('inbox', $inbox);
我想获取 2 和 3 id 之间的最后一条消息对话。输出看起来像 -
id from_id to_id text created
========================================
5 2 1 h r u? 2014-12-01 10:33:01
4 3 1 hw r u? 2014-12-01 10:32:22
请帮助我。如果您不知道 cakephp,请在此处发布核心 php MySQL 查询。
谢谢 聊天乐趣
最佳答案
请检查此查询 -
SELECT * FROM (SELECT DISTINCT * FROM messages WHERE (from_id=1 OR to_id=1) ORDER BY created DESC) as m GROUP BY `from_id`
关于php - 如何从聊天对话中获取最后一条消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27295124/