当前位置:首页 > CMS教程 > Thinkphp > 列表

ThinkPHP5&5.1框架关联模型分页操作示例

发布:smiling 来源: PHP粉丝网  添加日期:2021-12-09 14:34:11 浏览: 评论:0 

本文实例讲述了ThinkPHP5&5.1框架关联模型分页操作,分享给大家供大家参考,具体如下:

利用数据库的分页通常比较简单,但在实际项目中,我们往往需要处理复杂的数据,例如多表操作,这时候我们就需要利用模型层的关联操作得到最终想要的数据,而这些数据我们其实也是可以利用ThinkPHP5&5.1内置的分页引擎进行分页的。

卖的车辆我们称之为车源,车源和车主之间是多对一关系(车主可以有多辆车,一辆车只属于一个车主);车源和车辆图片之间是一对多关系(一辆车有多个图片,一个图片只属于一辆车);车辆还有自定义属性,它们之间是多对多关系,车辆的级别在车源表是个数字,具体名称需要到级别表获取。。。。可以看出,这块是非常复杂的,完全使用数据库操作会非常复杂,所以我们选择使用模型层进行处理。

首先建立模型之间的关系:

  1. public function selfattribute() 
  2.   return $this->belongsToMany("Selfattribute",'cars_selfattribute','selfattribute_id','cars_id'); 
  3. public function carsimg() 
  4.   return $this->hasMany('Carsimg'); 
  5. public function member() 
  6.   return $this->belongsTo('\app\index\model\Member'); 

同时对应的模型也要建立对应的方法。

在控制器层写方法:

  1. public function lst() 
  2.   $cars_model = model("Cars"); 
  3.   $cars_list = $cars_model->getCarsList(); 
  4.   $this->assign("cars_list",$cars_list); 
  5.   // dump($cars_list); 
  6.   return view(); 

其中getCarsList()方法在模型层中实现:

  1. public function getCarsList() 
  2.   $cars_list = Cars::paginate(2)->each(function($value,$key){ 
  3.     $level_find = db("level")->where('id',$value['level'])->value('name'); 
  4.     $value['level_name'] = $level_find
  5.     $value->carsimg; 
  6.     $value->member; 
  7.     $value->selfattribute; 
  8.   }); 
  9.   return $cars_list

模板上写法同普通分页:

  1. <div class="ibox-content"
  2.   <table class="table table-bordered"
  3.     <thead> 
  4.       <tr> 
  5.         <th>ID</th> 
  6.         <th>名称</th> 
  7.         <th>车主</th> 
  8.         <th>状态</th> 
  9.         <th>操作</th> 
  10.       </tr> 
  11.     </thead> 
  12.     <tbody> 
  13.     {volist name="cars_list" id="vo"
  14.       <tr> 
  15.         <td>{$vo.id}</td> 
  16.         <td><a href="{:url('index/cars/carsdetails',array('id'=>$vo.id))}" rel="external nofollow" >{$vo.full_name}</a></td> 
  17.         <td>{$vo.member.member_name}</td> 
  18.         <td> 
  19.         {switch $vo.status} 
  20.         {case 1}上架{/case
  21.         {case 0}下架{/case
  22.         {case -1}已售{/case
  23.         {default /}未审核 
  24.         {/switch
  25.         </td> 
  26.         <td> 
  27.           <div class="btn-group open"
  28.             <button data-toggle="dropdown" class="btn btn-primary dropdown-toggle" aria-expanded="true">操作 <span class="caret"></span> 
  29.             </button> 
  30.             <ul class="dropdown-menu"
  31.               <li><a href="">修改</a> 
  32.               </li> 
  33.               <li><a href="">删除</a> 
  34.               </li> 
  35.             </ul> 
  36.           </div> 
  37.         </td> 
  38.       </tr> 
  39.     {/volist} 
  40.     </tbody> 
  41.   </table> 
  42.   {$cars_list|raw} 
  43. </div> 

ThinkPHP5关联模型

Tags: ThinkPHP5关联模型

分享到: