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


Posted in PHP onAugust 03, 2019

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

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

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

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

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');
}

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

在控制器层写方法:

public function lst()
{
  $cars_model = model("Cars");
  $cars_list = $cars_model->getCarsList();
  $this->assign("cars_list",$cars_list);
  // dump($cars_list);
  return view();
}

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

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;
  }

模板上写法同普通分页:

<div 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>
          <div 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>
          </div>
        </td>
      </tr>
    {/volist}
    </tbody>
  </table>
  {$cars_list|raw}
</div>

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

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

PHP 相关文章推荐
Win2000+Apache+MySql+PHP4+PERL安装使用小结
Oct 09 PHP
打造计数器DIY三步曲(中)
Oct 09 PHP
杏林同学录(八)
Oct 09 PHP
用session做客户验证时的注意事项
Oct 09 PHP
php仿ZOL分页类代码
Oct 02 PHP
PHP 身份证号验证函数
May 07 PHP
php 过滤危险html代码
Jun 29 PHP
PHP中对用户身份认证实现两种方法
Jun 04 PHP
apache+codeigniter 通过.htcaccess做动态二级域名解析
Jul 01 PHP
ThinkPHP中获取指定日期后工作日的具体日期方法
Oct 14 PHP
Laravel实现ORM带条件搜索分页
Oct 24 PHP
PHP控制循环操作的时间
Apr 01 PHP
thinkPHP5.1框架使用SemanticUI实现分页功能示例
Aug 03 #PHP
thinkPHP5.1框架中Request类四种调用方式示例
Aug 03 #PHP
Windows平台PHP+IECapt实现网页批量截图并创建缩略图功能详解
Aug 02 #PHP
php抽象类和接口知识点整理总结
Aug 02 #PHP
使用composer 安装 laravel框架的方法图文详解
Aug 02 #PHP
php菜单/评论数据递归分级算法的实现方法
Aug 01 #PHP
PHP实现微信提现(企业付款到零钱)
Aug 01 #PHP
You might like
剖析 PHP 中的输出缓冲
2006/12/21 PHP
php对图像的各种处理函数代码小结
2013/07/08 PHP
linux下实现定时执行php脚本
2015/02/13 PHP
php读取txt文件并将数据插入到数据库
2016/02/23 PHP
thinkPHP3.x常量整理(预定义常量/路径常量/系统常量)
2016/05/20 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
2019/11/24 PHP
十个优秀的Ajax/Javascript实例网站收集
2010/03/31 Javascript
javascript对select标签的控制(option选项/select)
2013/01/31 Javascript
window.open关于浏览器拦截问题分析及解决方法
2013/02/05 Javascript
js阻止事件追加的具体实现
2014/10/15 Javascript
node.js中的dns.getServers方法使用说明
2014/12/08 Javascript
JS取得绝对路径的实现代码
2015/01/16 Javascript
AngularJS基础 ng-if 指令用法
2016/08/01 Javascript
js实现图片切换(动画版)
2016/12/25 Javascript
JavaScript Drum Kit 指南(纯 JS 模拟敲鼓效果)
2017/07/23 Javascript
vue.js实现只弹一次弹框
2018/01/29 Javascript
JavaScript异步加载问题总结
2018/02/17 Javascript
ES7之Async/await的使用详解
2019/03/28 Javascript
Javascript原生ajax请求代码实例
2020/02/20 Javascript
Python实现判断并移除列表指定位置元素的方法
2018/04/13 Python
如何在Django中设置定时任务的方法示例
2019/01/18 Python
pycharm修改file type方式
2019/11/19 Python
Python2和Python3中@abstractmethod使用方法
2020/02/04 Python
Python word文本自动化操作实现方法解析
2020/11/05 Python
波兰灯具、照明和LED购物网站:Lampy.pl
2019/03/11 全球购物
店长助理岗位职责
2013/12/13 职场文书
初中数学教学反思
2014/01/16 职场文书
安全生产实施方案
2014/02/23 职场文书
四年级学生评语大全
2014/04/21 职场文书
小学毕业演讲稿
2014/04/25 职场文书
小学优秀班主任事迹材料
2014/05/17 职场文书
通信工程专业求职信
2014/06/04 职场文书
基层党建工作宣传标语
2014/06/24 职场文书
离婚协议书样本
2015/01/26 职场文书
求职信内容一般写什么?
2015/03/20 职场文书
教你在 Java 中实现 Dijkstra 最短路算法的方法
2022/04/08 Java/Android