ホームページ  >  記事  >  バックエンド開発  >  Thinkphp3.2的模板中同一个foreach中要用到不同表的数据,应该怎样处理?

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

WBOY
WBOYオリジナル
2016-06-06 20:17:161268ブラウズ

看到一份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>
    声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。