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中将数组存到文件里的实现代码
Jan 19 PHP
用PHP即时捕捉PHP中的错误并发送email通知的实现代码
Jan 19 PHP
PHP中ini_set和ini_get函数的用法小结
Feb 18 PHP
php通过数组实现多条件查询实现方法(字符串分割)
May 06 PHP
ThinkPHP空模块和空操作详解
Jun 30 PHP
QQ互联一键登录审核不通过的解决方案
Sep 10 PHP
php实现事件监听与触发的方法
Nov 21 PHP
谈谈PHP中substr和substring的正确用法及相关参数的介绍
Dec 16 PHP
PHP带节点操作的无限分类实现方法详解
Nov 09 PHP
PHP实现的超长文本分页显示功能示例
Jun 04 PHP
php进程daemon化的正确实现方法
Sep 06 PHP
php array_chunk()函数用法与注意事项
Jul 12 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中修改浏览器的User-Agent来伪装你的浏览器和操作系统
2011/07/29 PHP
php cc攻击代码与防范方法
2012/10/18 PHP
一个简洁的PHP可逆加密函数(分享)
2013/06/06 PHP
PHP中使用asort进行中文排序失效的问题处理
2014/08/18 PHP
PHP实现GIF图片验证码
2015/11/04 PHP
phpStudy访问速度慢和启动失败的解决办法
2015/11/19 PHP
HTML中不支持静态Expando的元素的问题
2007/03/08 Javascript
jquery.validate使用攻略 第三部
2010/07/01 Javascript
js constructor的实际作用分析
2011/11/15 Javascript
js中事件的处理与浏览器对象示例介绍
2013/11/29 Javascript
JQuery中属性过滤选择器用法实例分析
2015/05/18 Javascript
实践中学习AngularJS表单
2016/03/21 Javascript
Angularjs 自定义服务的三种方式(推荐)
2016/08/02 Javascript
浅谈js常用内置方法和对象
2016/09/24 Javascript
jQuery实现手机版页面翻页效果的简单实例
2016/10/05 Javascript
前端面试知识点锦集(JavaScript篇)
2016/12/28 Javascript
浅谈在Vue-cli里基于axios封装复用请求
2017/11/06 Javascript
解决Jstree 选中父节点时被禁用的子节点也会选中的问题
2017/12/27 Javascript
jQuery 实现左右两侧菜单添加、移除功能
2018/01/02 jQuery
angular6 利用 ngContentOutlet 实现组件位置交换(重排)
2018/11/02 Javascript
详解TypeScript+Vue 插件 vue-class-component的使用总结
2019/02/18 Javascript
详解element-ui日期时间选择器的日期格式化问题
2019/04/08 Javascript
详解auto-vue-file:一个自动创建vue组件的包
2019/04/26 Javascript
js 获取本周、上周、本月、上月、本季度、上季度的开始结束日期
2020/02/01 Javascript
vue3 watch和watchEffect的使用以及有哪些区别
2021/01/26 Vue.js
详解在Python程序中自定义异常的方法
2015/10/16 Python
Python探索之URL Dispatcher实例详解
2017/10/28 Python
keras做CNN的训练误差loss的下降操作
2020/06/22 Python
基于python实现音乐播放器代码实例
2020/07/01 Python
Django admin组件的使用
2020/10/24 Python
css3绘制百度的小度熊
2018/10/29 HTML / CSS
英国可持续奢侈品包包品牌:Elvis & Kresse
2018/08/05 全球购物
酒店总经理欢迎词
2014/01/15 职场文书
2016年“11.11”光棍节活动总结
2016/04/05 职场文书
pytorch 6 batch_train 批训练操作
2021/05/28 Python
MySQL去除密码登录告警的方法
2022/04/20 MySQL