前言

查询聊天列表,并返回最后一条聊天记录。这个有一个比较尴尬的点就是,一个是你主动发出的,一个是你接收的。

所以这个SQL会比较长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长!

步骤

查询出自己发的消息然后联合查询接收到的消息,这里要提下union的特性,就是两个合并的查询语句

  1. 字段数量必须一致!
  2. 字段顺序必须一致!
  3. 数据类型也要相似!

原始SQL

SELECT `uid`,`nickname`,`avatar`,`content`,`time` FROM (
SELECT * FROM (
SELECT toid as uid,`content`,`time` FROM `chat_log` WHERE ( fromid =1 )
UNION
SELECT fromid as uid,content,time FROM chat_log WHERE toid = 1
) `tmp` GROUP BY tmp.uid ORDER BY `tmp`.`time`
) `t` LEFT JOIN `chat_user` `u` ON `t`.`uid`=`u`.`id`

查询结果

改为TP5

整理思路也很简单,就是先进行**两次**sql语句的构造,然后用左连接查询.

 $sub = Db::name('log')
->field('toid as uid, content, time')
->where('fromid ='.$fromid)
->union('SELECT fromid as uid,content,time FROM chat_log WHERE toid = '.$fromid)
->buildSql();
$query = Db::table($sub)
->alias('tmp')
->group('tmp.uid')
->order('tmp.time')
->buildSql();
$info = DB::table($query)
->alias('t')
->field('uid,nickname,avatar,content,time')
->join('chat_user u', 't.uid=u.id', 'LEFT')
->select();

查询结果

{
"status": true,
"msg": "请求成功",
"data": [
{
"uid": 2,
"nickname": "立冬",
"avatar": "https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=3667616433,706958275&fm=26&gp=0.jpg",
"content": "1553187007",
"time": 1553187000
},
{
"uid": 3,
"nickname": "立春",
"avatar": "https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=3962805517,413692801&fm=26&gp=0.jpg",
"content": "立春姐姐",
"time": 1553187001
},
{
"uid": 4,
"nickname": "立夏",
"avatar": "https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=153106697,274998536&fm=26&gp=0.jpg",
"content": "立夏姐姐",
"time": 1553187002
},
{
"uid": 5,
"nickname": "小雨",
"avatar": "https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=412473880,1796535308&fm=26&gp=0.jpg",
"content": "小雨妹妹",
"time": 1553187022
}
]
}

TP5.x——聊天列表查询的更多相关文章

  1. SHAREPOINT - CAML列表查询

    首先要了解的是CAML(Collaboration Application Markup Language)不仅仅是用在对列表.文档库的查询,字段的定义,站点定义等处处使用的都是CAML. 简单的提一 ...

  2. atitit.提升开发效率---MDA 软件开发方式的革命(5)----列表查询建模

    )----列表查询建模 1. 配置条件字段@Conditional 1 2. 配置条件字段显示类型为range----@Conditional(displayType = displayType.ra ...

  3. 【Javascript】列表查询页面,简单地保存上一次查询的查询参数

    开发中经常做一些查询参数 + 列表参数的功能,这些功能有时候需提供导出Excel,或带超链接到其他明细页面的功能点. 在一些交互性要求严格的系统,需求方会要求: 用户第一个输入某些查询条件进行列表查询 ...

  4. Moss列表查询,删除条目,更新条目。

    基于Query语句的列表查询 function retrieveListItems(itemId) {    var siteUrl=_spPageContextInfo.webServerRelat ...

  5. 【SSH系列】一步步深入springmvc+商品列表查询demo

    在前面的博文中,小编主要简单的介绍springmvc的体系结构.mvc模式的优缺点以及mvc框架,今天我们来继续学习springmvc的相关知识,在这篇博文中,小编讲解过springmvc的体系结构, ...

  6. SharePoint中跨列表查询

    1,最近的项目中遇到一个需求,站点中有几十个列表,其中每5,6个列表属于一个模块下的.客户的需求是,首页上显示一个模块下所有列表数据的前5条,并按创建时间排序. 2,刚刚考虑到这块的实现方法时,用的是 ...

  7. 写了一个Windows服务,通过C#模拟网站用户登录并爬取BUG列表查询有没有新的BUG,并提醒我

    写了一个Windows服务,通过C#模拟网站用户登录并爬取BUG列表查询有没有新的BUG,并提醒我 1.HttpUtil工具类,用于模拟用户登录以及爬取网页: using System; using ...

  8. Office365学习笔记—列表查询,删除条目,更新条目。

    1,基于Query语句的列表查询. function retrieveListItems(itemId) { var siteUrl=_spPageContextInfo.webServerRelat ...

  9. (六)通过solr7的API实现商品的列表查询

    (六)通过solr7的API实现商品的列表查询 工具类: 获取 HttpSolrClient public class Constant { public static HttpSolrClient ...

随机推荐

  1. XML在线转化为JSON

    http://www.utilities-online.info/xmltojson/

  2. centos7安装个人网盘owncloud

    现在个人资料越来越重要,网络速度也已经满足日常需要,网盘已经是生活着存取个人数据不可缺少的工具. 下面在linxu centos7下面安装owncloud搭建自己私人网盘: 1.新建一个账号用来安装个 ...

  3. 有赞 MySQL 自动化运维之路 — ZanDB

    转自:https://tech.youzan.com/youzan-mysql-auto-ops-road/ 一.前言 在互联网时代,业务规模常常出现爆发式的增长.快速的实例交付,数据库优化以及备份管 ...

  4. UVALive 3026(KMP算法)

    UVALive 3026     KMP中next[]数组的应用: 题意:给出一个字符串,问该字符串每个前缀首字母的位置和该前缀的周期. 思路:裸KMP直接上就是了: 设该字符串为str,str字符串 ...

  5. 第八节:numpy之四则运算与逻辑运算

  6. 洛谷 2234 BZOJ 1588 HNOI2002 营业额统计

    [题解] treap模板题,直接用Treap维护前驱.后继,每次找到更接近当前val的加上就好了. #include<cstdio> #include<algorithm> # ...

  7. LMDB installation

    Official Website: http://lmdb.readthedocs.io/en/release/ Install commands for Ubuntu: $ sudo apt-get ...

  8. mysql 数据的某个范围

    select * from table_name where limit num1, num2; num1 : 开始条目 num2 :选择数目

  9. HyperLedger项目以及社区

    本文不涉及任何技术开发的内容,仅供你跟同学.同事吹牛B之用.就像很多牛人总爱讲历史典故一样. 一.诞生与现状 HyperLedger 诞生于2015年12月17日,HyperLedger 追寻Apac ...

  10. [NOIP2016day1T1] 玩具迷題(toy)

    题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业. 有一天, 这些玩具小人把小南的眼镜藏了起来. 小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的面朝圈外.如下图: 这时singer告诉 ...