搜索实现最近联系人 thinkPHP框架
2016-03-07 12:08
579 查看
数据库描述:
![](https://img-blog.csdn.net/20160307120025838)
由于每个用户可以跟多个人发送消息,而消息列表则需要找出该用户最近联系过的人,以及相应的信息。
上代码:
由于每个用户可以跟多个人发送消息,而消息列表则需要找出该用户最近联系过的人,以及相应的信息。
上代码:
$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']; } }
相关文章推荐
- kindeditor 批量上传 上传失败 thinkphp swfupload session
- ThinkPHP关联模型操作实例分析
- thinkphp3.0 模板中函数的使用
- ThinkPHP采用<volist>实现三级循环代码实例
- Thinkphp模板标签if和eq的区别和比较实例分析
- 合并ThinkPHP配置文件以消除代码冗余的实现方法
- ThinkPHP中自定义目录结构的设置方法
- ThinkPHP控制器详解
- ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
- 解析thinkphp中的M()与D()方法的区别
- ThinkPHP采用模块和操作分析
- Thinkphp模板中使用自定义函数的方法
- linux下使用ThinkPHP需要注意大小写导致的问题
- ThinkPHP中FCKeditor编辑器的使用方法
- thinkphp的CURD和查询方式介绍
- THINKPHP支持YAML配置文件的设置方法
- Thinkphp中import的几个用法详细介绍
- 浅谈thinkphp的实例化模型
- ThinkPHP控制器里javascript代码不能执行的解决方法
- ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法