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 相关文章推荐
文章推荐系统(三)
Oct 09 PHP
php array_unique之后json_encode需要注意
Jan 02 PHP
fleaphp crud操作之findByField函数的使用方法
Apr 23 PHP
php array_pop()数组函数将数组最后一个单元弹出(出栈)
Jul 12 PHP
PHP中return 和 exit 、break和contiue 区别与用法
Apr 09 PHP
探讨:array2xml和xml2array以及xml与array的互相转化
Jun 24 PHP
PHP引用符&amp;的用法详细解析
Aug 22 PHP
php实现memcache缓存示例讲解
Dec 04 PHP
ThinkPHP提交表单时默认自动转义的解决方法
Nov 25 PHP
thinkPHP5.0框架命名空间详解
Mar 18 PHP
PHP strripos函数用法总结
Feb 11 PHP
如何运行/调试你的PHP代码
Oct 23 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小马小结(方便查找后门的朋友)
2012/05/05 PHP
php给一组指定关键词添加span标签的方法
2015/03/31 PHP
laravel 查询数据库获取结果实现判断是否为空
2019/10/24 PHP
Thinkphp 框架扩展之Widget扩展实现方法分析
2020/04/23 PHP
用javascript实现自定义标签
2007/05/08 Javascript
Javascript 原型和继承(Prototypes and Inheritance)
2009/04/01 Javascript
Tab页界面,用jQuery及Ajax技术实现
2009/09/21 Javascript
单独使用CKFinder选择图片的方法
2010/08/21 Javascript
JS对select控件option选项的增删改查示例代码
2013/10/21 Javascript
使用js简单实现了tree树菜单
2013/11/20 Javascript
AngularJS入门教程之AngularJS模型
2016/04/18 Javascript
微信小程序 教程之注册页面
2016/10/17 Javascript
JS实现的验证身份证及获取地区功能示例
2017/01/16 Javascript
基于Require.js使用方法(总结)
2017/10/26 Javascript
5分钟学会Vue动画效果(小结)
2018/07/21 Javascript
jQuery 选择器用法实例分析【prev + next】
2020/05/22 jQuery
在vue中使用回调函数,this调用无效的解决
2020/08/11 Javascript
python使用分治法实现求解最大值的方法
2015/05/12 Python
详解Python的Django框架中的中间件
2015/07/24 Python
对dataframe进行列相加,行相加的实例
2018/06/08 Python
pip指定python位置安装软件包的方法
2019/07/12 Python
Anaconda的安装及其环境变量的配置详解
2020/04/22 Python
Pycharm编辑器功能之代码折叠效果的实现代码
2020/10/15 Python
纯css3(无图片/js)制作的几个社交媒体网站的图标
2013/03/21 HTML / CSS
html5 sessionStorage会话存储_动力节点Java学院整理
2017/07/06 HTML / CSS
SteelSeries赛睿官网:游戏外设和配件的领先制造商(耳机、键盘、鼠标和鼠标垫)
2018/06/17 全球购物
JSF面试题:Jsf中导航的标签是什么
2013/04/20 面试题
创先争优活动方案
2014/02/12 职场文书
创业培训计划书
2014/05/03 职场文书
高效课堂标语
2014/06/26 职场文书
民族团结好少年事迹材料
2014/08/19 职场文书
2014年大学生预备党员思想汇报1000字
2014/09/13 职场文书
2014年个人债务授权委托书范本
2014/09/22 职场文书
四风问题民主生活会对照检查材料思想汇报
2014/09/27 职场文书
导游词之井冈山
2019/11/20 职场文书
PostgreSQL聚合函数介绍以及分组和排序
2022/04/12 PostgreSQL