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 相关文章推荐
PHP+MYSQL的文章管理系统(一)
Oct 09 PHP
建立动态的WML站点(二)
Oct 09 PHP
php 应用程序安全防范技术研究
Sep 25 PHP
php 无限分类的树类代码
Dec 03 PHP
php ftp文件上传函数(基础版)
Jun 03 PHP
php学习笔记之面向对象编程
Dec 29 PHP
深入理解:单一入口、MVC、ORM、CURD、ActiveRecord概念
Jun 06 PHP
Symfony学习十分钟入门经典教程
Feb 03 PHP
PHP常用技巧汇总
Mar 04 PHP
laravel 5异常错误:FatalErrorException in Handler.php line 38的解决
Oct 12 PHP
PHP利用curl发送HTTP请求的实例代码
Jul 09 PHP
PHP 裁剪图片
Mar 09 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语法(3)
2006/10/09 PHP
php的字符串用法小结
2010/06/08 PHP
php file_put_contents()功能函数(集成了fopen、fwrite、fclose)
2011/05/24 PHP
基于PHP字符串的比较函数strcmp()与strcasecmp()的使用详解
2013/05/15 PHP
php上传大文件失败的原因及应对策略
2015/10/20 PHP
Thinkphp 框架扩展之标签库驱动原理与用法分析
2020/04/23 PHP
js 判断浏览器类型 去全角、半角空格 自动关闭当前窗口
2009/04/10 Javascript
js实现页面转发功能示例代码
2013/08/05 Javascript
JavaScript随机生成信用卡卡号的方法
2015/04/07 Javascript
jquery删除数组中重复元素
2016/12/05 Javascript
jQuery内容筛选选择器实例代码
2017/02/06 Javascript
JS利用cookies设置每隔24小时弹出框
2017/04/20 Javascript
JavaScript实现单击网页任意位置打开新窗口与关闭窗口的方法
2017/09/21 Javascript
AnglarJs中的上拉加载实现代码
2018/02/08 Javascript
对Vue beforeRouteEnter 的next执行时机详解
2018/08/25 Javascript
微信小程序实现的一键拨号功能示例
2019/04/24 Javascript
JS实现使用POST方式发送请求
2019/08/30 Javascript
layui 中select下拉change事件失效的解决方法
2019/09/20 Javascript
javascript实现的图片预览和上传功能示例【兼容IE 9】
2020/05/01 Javascript
Node.js API详解之 util模块用法实例分析
2020/05/09 Javascript
vue element el-transfer增加拖拽功能
2021/01/15 Vue.js
Python3处理文件中每个词的方法
2015/05/22 Python
浅谈Python数据类型之间的转换
2016/06/08 Python
Python 编码规范(Google Python Style Guide)
2018/05/05 Python
Python中print和return的作用及区别解析
2019/05/05 Python
Pytorch Tensor的索引与切片例子
2019/08/18 Python
Python urllib库如何添加headers过程解析
2020/10/05 Python
通过实例解析python and和or使用方法
2020/11/14 Python
MyFrenchPharma中文网:最大的法国药妆平台
2016/10/07 全球购物
美国药妆网站:EDCskincare.com(防晒、痤疮、抗衰老等)
2017/04/28 全球购物
HR喜欢的自荐信格式
2013/10/08 职场文书
日语系毕业生推荐信
2013/11/11 职场文书
学校对教师的评语
2014/04/28 职场文书
唐山大地震观后感
2015/06/05 职场文书
大学生志愿者心得体会
2016/01/15 职场文书
导游词之桂林
2019/08/20 职场文书