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

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

WBOY
WBOYOriginal
2016-06-06 20:17:161296browse

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

<code>/*</code>
    • 首页视图
      */

    1. function Index(){

      <code>       //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();
             
         }
         </code>

      。视图中的代码:

    <foreach name="weibo" item="v">
        <if condition='!$v["isturn"]'>
    <!--====================普通微博样式====================-->
                <div class="weibo">
                    <!--头像-->
                    <div class="face">
                        <a href="%7B:U('/'%20.%20%24v%5B'uid'%5D)%7D">
                            <img  src="<if%20condition='%24v%5B" face alt="Thinkphp3.2的模板中同一个foreach中要用到不同表的数据,应该怎样处理?" >
                                __ROOT__/Uploads/Face/{$v.face}
                            <else></else>
                                __PUBLIC__/Images/noface.gif
                            " width='50' height='50'/>
                        </a>
                    </div>
                
    <p>》》》》》<br>重点在这里:用户的头像$V.face 不知是来自哪里的。<br>weibo这个表中并没有face这一列,也没看到代码中去读取了另一个表中的信息,<br>它的weibo表结构是这样的:<br><img  data-src="/img/bVs13V" alt="Thinkphp3.2的模板中同一个foreach中要用到不同表的数据,应该怎样处理?" ></p>
    <p>头像信息可能是来自这个表:<br><img  data-src="/img/bVs13Z" alt="Thinkphp3.2的模板中同一个foreach中要用到不同表的数据,应该怎样处理?" ></p>
    <p>但首页这个表中也只有face50  face80  face180 而没有face这一列。</p>
    <p>想请问它是怎样把不同表的数据放到同一个foreach中处理的?</p>
    <p>原代码来自:https://github.com/milkbobo/Thinkphp3.2.3-weibo</p>
    
                                
                            
    
    
                                                                                                                            
                         <h2>回复内容:</h2>
                          
                                                                
    <p>看到一份Thinkphp做微博开发的代码,但有些地方没有看懂:<br>一<strong>。控制器中的代码:</strong></p>
    <pre class="brush:php;toolbar:false">&lt;code&gt;/*&lt;/code&gt;</pre>
    <li><ul><li><p>首页视图<br>*/</p></li></ul></li>
    <ol><li>
    <p>function Index(){</p>
    <pre class="brush:php;toolbar:false">&lt;code&gt;       //p(S('usermsg'.session('uid')));
           //replace_weibo('adsf');
           //p(C('FILTER'));
           $db=D('Weibo');
           
           //取得当前用户的ID与当前用户 所有关注好友的ID
           
           $uid = array(session('uid'));//????
           $where=array('fans'=&gt;session('uid'));
           
           if (isset($_GET['gid'])){
               $gid = I('gid','','intval');
               $where['gid']=$gid;
               $uid = '';
           }
           
           $result =M('follow')-&gt;where($where)-&gt;field('follow')-&gt;select();
           if($result){
               foreach ($result as $v){
                   $uid[] = $v['follow'];
               }
           }
           
           //组合WHERE条件,条件为当前用户自身的ID与当前用户所关注好友的ID
           $where = array('uid'=&gt;array('IN',$uid));//where条件可以是二维数组吗?
           
           //统计数据总条数,用于分页
           $count  = $db-&gt;where($where)-&gt;count();// 查询满足要求的 总记录数  
           $Page       = new \Think\Page($count,20);// 实例化分页类 传入总记录数和每页显示的记录数(20)
           // 进行分页数据查询 注意limit方法的参数要使用Page类的属性
           $limit=$Page-&gt;firstRow.','.$Page-&gt;listRows;
           $Page-&gt;setConfig('theme',&quot;共 %TOTAL_ROW% 条记录 %FIRST% %UP_PAGE% %NOW_PAGE% / %TOTAL_PAGE% %DOWN_PAGE% %END% &quot;);
           $Page-&gt;setConfig('prev','上一页');
           $Page-&gt;setConfig('next','下一页');
           
           //读取所有微博
           $result= $db-&gt;getAll($where,$limit);//getAll()方法是驱动拓展里的
           //p($result);
           $this-&gt;page= $Page-&gt;show();// 分页显示输出
           $this -&gt; weibo = $result;
           $this-&gt;display();
           
       }
       &lt;/code&gt;</pre>
    <p>二<strong>。视图中的代码:</strong></p>
    </li></ol>
    <pre class="brush:php;toolbar:false">&lt;code&gt;&lt;foreach name=&quot;weibo&quot; item=&quot;v&quot;&gt;
        &lt;if condition='!$v[&quot;isturn&quot;]'&gt;
    &lt;!--====================普通微博样式====================--&gt;
                &lt;div class=&quot;weibo&quot;&gt;
                    &lt;!--头像--&gt;
                    &lt;div class=&quot;face&quot;&gt;
                        &lt;a href=&quot;%7B:U('/'%20.%20%24v%5B'uid'%5D)%7D&quot;&gt;
                            &lt;img  src=&quot;&lt;if%20condition='%24v%5B&quot; face alt=&quot;Thinkphp3.2的模板中同一个foreach中要用到不同表的数据,应该怎样处理?&quot; &gt;
                                __ROOT__/Uploads/Face/{$v.face}
                            &lt;else&gt;&lt;/else&gt;
                                __PUBLIC__/Images/noface.gif
                            &quot; width='50' height='50'/&gt;
                        &lt;/a&gt;
                    &lt;/div&gt;
                
    &lt;p&gt;》》》》》&lt;br&gt;重点在这里:用户的头像$V.face 不知是来自哪里的。&lt;br&gt;weibo这个表中并没有face这一列,也没看到代码中去读取了另一个表中的信息,&lt;br&gt;它的weibo表结构是这样的:&lt;br&gt;&lt;img  data-src=&quot;/img/bVs13V&quot; alt=&quot;Thinkphp3.2的模板中同一个foreach中要用到不同表的数据,应该怎样处理?&quot; &gt;&lt;/p&gt;
    &lt;p&gt;头像信息可能是来自这个表:&lt;br&gt;&lt;img  data-src=&quot;/img/bVs13Z&quot; alt=&quot;Thinkphp3.2的模板中同一个foreach中要用到不同表的数据,应该怎样处理?&quot; &gt;&lt;/p&gt;
    &lt;p&gt;但首页这个表中也只有face50  face80  face180 而没有face这一列。&lt;/p&gt;
    &lt;p&gt;想请问它是怎样把不同表的数据放到同一个foreach中处理的?&lt;/p&gt;
    &lt;p&gt;原代码来自:https://github.com/milkbobo/Thinkphp3.2.3-weibo&lt;/p&gt;
    
                                
                            
                &lt;p class=&quot;answer fmt&quot; data-id=&quot;1020000004497633&quot;&gt;
                                        
    &lt;/p&gt;
    &lt;p&gt;Index/Home/Model/CommentModel.class.php &lt;/p&gt;
    &lt;p&gt;10                'id','content','time','wid',//'uid',&lt;br&gt;11                '_type'=&gt;'LEFT'&lt;br&gt;12            ),&lt;br&gt;13            'userinfo'=&gt;array(&lt;br&gt;14                'username','face50'=&gt;'face','uid',&lt;br&gt;15                '_on'=&gt;'comment.uid = userinfo.uid'&lt;br&gt;16            ),&lt;/p&gt;
    
                                &lt;/div&gt;&lt;/if&gt;&lt;/foreach&gt;&lt;/code&gt;</pre>
    </div></if></foreach>
    Statement:
    The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn