ThinkPHP 使用group,获取最新的id或者数据

7 篇文章 0 订阅

数据库里有一个用户的多条数据的时候,而我们又要显示出该用户最新的那一条数据,我们就要用到group以避免重复显示该用户的多条数据。

 
$message = $model->order('timestamp desc')->group('user')->select();

但TP的group实际使用后,虽然已经用了时间降序来排列,但因为TP的group的原因,显示出来的是该用户最早的一条数据。那么这里要用到子查询了。


$model = M();
$WMSG = M('Message') -> where(array('touser'=>$og_id))-> order('timestamp desc') -> select(false);
$message_id = $model->table($WMSG.' a')->order('timestamp desc')->group('fromuser')->select();

foreach($message_id as $key=>$value) { //循环遍历最新的message_id
        $msg_id[] = $value['id'];
        }
        $map['msg_id'] = array('in',$msg_id); //数组

        $this->_list($ViewModel, $map, 'timestamp desc', '', 'fromuser');


 
 
这里$WMSG这条是生成一条查询数据库的SQL语句,就是先以时间最新的来排序,查询出对应的数据. 

$message_id 就是将$WMSG查询出来的数据以group来去掉重复.

下面的foreach就是遍历查询出来的msg_id,用作下面的list输出。

这样一来就能找到数据库中,该用户多条数据的最新一条, 并显示出来

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值