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

WBOY
Release: 2016-06-06 20:17:16
Original
1272 people have browsed it

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

<code>/*</code>
Copy after login
    • 首页视图
      */

    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>
      Copy after login
      Copy after login

      。视图中的代码:

    <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>
    <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">&lt;code&gt;/*&lt;/code&gt;</pre><div class="contentsignin">Copy after login</div></div>
    <li><ul><li><p>首页视图<br>*/</p></li></ul></li>
    <ol><li>
    <p>function Index(){</p>
    <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><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><div class="contentsignin">Copy after login</div></div><div class="contentsignin">Copy after login</div></div>
    <p>二<strong>。视图中的代码:</strong></p>
    </li></ol>
    <div class="code" style="position:relative; padding:0px; margin:0px;"><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 class="contentsignin">Copy after login</div></div>
    </div></if></foreach>
    Related labels:
    source:php.cn
    Statement of this Website
    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
    Popular Tutorials
    More>
    Latest Downloads
    More>
    Web Effects
    Website Source Code
    Website Materials
    Front End Template