当前位置:Gxlcms > PHP教程 > Thinkphp3.2的模板中同一个foreach中要用到不同表的数据,应该怎样处理?

Thinkphp3.2的模板中同一个foreach中要用到不同表的数据,应该怎样处理?

时间:2021-07-01 10:21:17 帮助过:6人阅读

看到一份Thinkphp做微博开发的代码,但有些地方没有看懂:
。控制器中的代码:

/*
    • 首页视图
      */

    1. function Index(){

             //p(S('usermsg'.session('uid')));
             //replace_weibo('adsf');
             //p(C('FILTER'));
             $db=D('Weibo');
             
             //取得当前用户的ID与当前用户 所有关注好友的ID
             
             $uid = array(session('uid'));//????
             $where=array('fans'=>session('uid'));
             
             if (isset($_GET['gid'])){
                 $gid = I('gid','','intval');
                 $where['gid']=$gid;
                 $uid = '';
             }
             
             $result =M('follow')->where($where)->field('follow')->select();
             if($result){
                 foreach ($result as $v){
                     $uid[] = $v['follow'];
                 }
             }
             
             //组合WHERE条件,条件为当前用户自身的ID与当前用户所关注好友的ID
             $where = array('uid'=>array('IN',$uid));//where条件可以是二维数组吗?
             
             //统计数据总条数,用于分页
             $count  = $db->where($where)->count();// 查询满足要求的 总记录数  
             $Page       = new \Think\Page($count,20);// 实例化分页类 传入总记录数和每页显示的记录数(20)
             // 进行分页数据查询 注意limit方法的参数要使用Page类的属性
             $limit=$Page->firstRow.','.$Page->listRows;
             $Page->setConfig('theme',"共 %TOTAL_ROW% 条记录 %FIRST% %UP_PAGE% %NOW_PAGE% / %TOTAL_PAGE% %DOWN_PAGE% %END% ");
             $Page->setConfig('prev','上一页');
             $Page->setConfig('next','下一页');
             
             //读取所有微博
             $result= $db->getAll($where,$limit);//getAll()方法是驱动拓展里的
             //p($result);
             $this->page= $Page->show();// 分页显示
      输出 $this -> weibo = $result; $this->display(); }

      。视图中的代码:

    
        
    
                
                    
                    
                        
                            
                                __ROOT__/Uploads/Face/{$v.face}
                            
                                __PUBLIC__/Images/noface.gif
                            " width='50' height='50'/>
                        
                    
                

    》》》》》
    重点在这里:用户的头像$V.face 不知是来自哪里的。
    weibo这个表中并没有face这一列,也没看到代码中去读取了另一个表中的信息,
    它的weibo表结构是这样的:

    头像信息可能是来自这个表:

    但首页这个表中也只有face50 face80 face180 而没有face这一列。

    想请问它是怎样把不同表的数据放到同一个foreach中处理的?

    原代码来自:https://github.com/milkbobo/Thinkphp3.2.3-weibo

    回复内容:

    看到一份Thinkphp做微博开发的代码,但有些地方没有看懂:
    。控制器中的代码:

    /*
    • 首页视图
      */

    1. function Index(){

             //p(S('usermsg'.session('uid')));
             //replace_weibo('adsf');
             //p(C('FILTER'));
             $db=D('Weibo');
             
             //取得当前用户的ID与当前用户 所有关注好友的ID
             
             $uid = array(session('uid'));//????
             $where=array('fans'=>session('uid'));
             
             if (isset($_GET['gid'])){
                 $gid = I('gid','','intval');
                 $where['gid']=$gid;
                 $uid = '';
             }
             
             $result =M('follow')->where($where)->field('follow')->select();
             if($result){
                 foreach ($result as $v){
                     $uid[] = $v['follow'];
                 }
             }
             
             //组合WHERE条件,条件为当前用户自身的ID与当前用户所关注好友的ID
             $where = array('uid'=>array('IN',$uid));//where条件可以是二维数组吗?
             
             //统计数据总条数,用于分页
             $count  = $db->where($where)->count();// 查询满足要求的 总记录数  
             $Page       = new \Think\Page($count,20);// 实例化分页类 传入总记录数和每页显示的记录数(20)
             // 进行分页数据查询 注意limit方法的参数要使用Page类的属性
             $limit=$Page->firstRow.','.$Page->listRows;
             $Page->setConfig('theme',"共 %TOTAL_ROW% 条记录 %FIRST% %UP_PAGE% %NOW_PAGE% / %TOTAL_PAGE% %DOWN_PAGE% %END% ");
             $Page->setConfig('prev','上一页');
             $Page->setConfig('next','下一页');
             
             //读取所有微博
             $result= $db->getAll($where,$limit);//getAll()方法是驱动拓展里的
             //p($result);
             $this->page= $Page->show();// 分页显示
      输出 $this -> weibo = $result; $this->display(); }

      。视图中的代码:

    
        
    
                
                    
                    
                        
                            
                                __ROOT__/Uploads/Face/{$v.face}
                            
                                __PUBLIC__/Images/noface.gif
                            " width='50' height='50'/>
                        
                    
                

    》》》》》
    重点在这里:用户的头像$V.face 不知是来自哪里的。
    weibo这个表中并没有face这一列,也没看到代码中去读取了另一个表中的信息,
    它的weibo表结构是这样的:

    头像信息可能是来自这个表:

    但首页这个表中也只有face50 face80 face180 而没有face这一列。

    想请问它是怎样把不同表的数据放到同一个foreach中处理的?

    原代码来自:https://github.com/milkbobo/Thinkphp3.2.3-weibo

    Index/Home/Model/CommentModel.class.php

    10 'id','content','time','wid',//'uid',
    11 '_type'=>'LEFT'
    12 ),
    13 'userinfo'=>array(
    14 'username','face50'=>'face','uid',
    15 '_on'=>'comment.uid = userinfo.uid'
    16 ),

    人气教程排行