您的位置:首页 > 编程语言 > PHP开发

搜索实现最近联系人 thinkPHP框架

2016-03-07 12:08 579 查看
数据库描述:



由于每个用户可以跟多个人发送消息,而消息列表则需要找出该用户最近联系过的人,以及相应的信息。

上代码:

$message_model = M("Message");
//构建model

$message_list = $message_model->
where("send_id= %d or receive_id =%d",$user_id)->
order('send_time DESC')->
group('send_id,receive_id')-> //发送id 和收取id 为一个组
select();
//查询出来有过联系的语句,包含 A 发给B 以及B 发给A 的情况
//此处没有去重

$contact_users = array();
$real_list = array();
//用一个foeach去重 然后找出最近的消息
//in_array()这个方法就是 用来去重:不在数组中,则添加;在数组中,则为重复数据,不添加
foreach($message_list as $k=>$v){
if(($v['send_id'] == $user_id)&&(!in_array($v['receive_id'],$contact_users))){
$contact_users[] = $v['receive_id'];
$message_list[$k]['user_info']  = getUserInfo($v['receive_id']);
$message_list[$k]['contact_id'] = $v['receive_id'];
$message_list[$k]['content']    = getLastMessage($user_id,$v['receive_id']);
$real_list[] = $message_list[$k];
}else{
if(($v['receive_id']==$user_id)&&(!in_array($v['send_id'],$contact_users))){
$contact_users[] = $v['send_id'];
$message_list[$k]['user_info']  = getUserInfo($v['send_id']);
$message_list[$k]['contact_id'] = $v['send_id'];
$message_list[$k]['content']    = getLastMessage($v['send_id'],$user_id);
$real_list[] =$message_list[$k];
}
}
}
//查询出来有过联系的人,并插入数组
$this->message_list = $real_list;

//获取最新 一条消息的方法如下
/*
* 获取两个人之间的最后一条消息
*/
function getLastMessage($send_id,$receive_id){
if($send_id && $receive_id){
$message_model = M("Message");
$condition = array(
'send_id'=>$send_id,
'receive_id'=>$receive_id
);
$msg = $message_model->where($condition)->field('content')->order("send_time DESC")->limit(1)->select();
return $msg[0]['content'];
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  thinkphp