当前位置:编程学习 > > 正文

thinkphp5.0实例详解(ThinkPHP5&5.1框架关联模型分页操作示例)

时间:2022-01-15 01:26:17类别:编程学习

thinkphp5.0实例详解

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

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

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

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

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

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • public function selfattribute()
  • {
  •   return $this->belongsToMany("Selfattribute",'cars_selfattribute','selfattribute_id','cars_id');
  • }
  • public function carsimg()
  • {
  •   return $this->hasMany('Carsimg');
  • }
  • public function member()
  • {
  •   return $this->belongsTo('\app\index\model\Member');
  • }
  • 同时对应的模型也要建立对应的方法。

    在控制器层写方法:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • public function lst()
  • {
  •   $cars_model = model("Cars");
  •   $cars_list = $cars_model->getCarsList();
  •   $this->assign("cars_list",$cars_list);
  •   // dump($cars_list);
  •   return view();
  • }
  • 其中getCarsList()方法在模型层中实现:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • public function getCarsList()
  • {
  •   $cars_list = Cars::paginate(2)->each(function($value,$key){
  •     $level_find = db("level")->where('id',$value['level'])->value('name');
  •     $value['level_name'] = $level_find;
  •     $value->carsimg;
  •     $value->member;
  •     $value->selfattribute;
  •   });
  •   return $cars_list;
  • }
  • 模板上写法同普通分页:

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

    希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

    原文链接:https://blog.csdn.net/pan_yuyuan/article/details/81948020

    上一篇下一篇

    猜您喜欢

    热门推荐